私は、アンドロイドがレイアウトのために行うこの測定全体と本当に混同しています。基本的には、ビューの実際の計算された高さと幅をレイアウトする前にレイアウトしておきたいのです。 viewpropertyanimatorを使用して開いたときにアニメーション化したい隠されたLinearLayout
があるので、計算された高さと幅を取得する必要があります。私はアニメーション化する前にアニメーターに目標幅(計算された幅)を供給する必要があります。このレイアウトの幅は、その幅のandroid:weight
パラメータに依存しているため動的です。したがって、静的な値を与えることはできません。ここでgetMeasuredHeight()とmeasure()の後に返される幅
が私の活動のクラスがあります:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/email_activity_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:baselineAligned="false">
<LinearLayout
android:id="@+id/email_activity_gmail_layout"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
<LinearLayout
android:id="@+id/email_activity_yahoo_mail_layout"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
<LinearLayout
android:id="@+id/email_activity_windows_live_layout"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
<LinearLayout
android:id="@+id/email_activity_email_content_layout"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="0"
/>
私の前のコメントをスクラッチ。ここには編集済みのものがあります: ねえ!私はあなたのソリューションを試してみましたが、 'v.measure(display.getWidth()、display.getHeight());'を呼び出すと再び値は0に戻ります。高さと幅を最初に設定すると、ディスプレイ上の高さと幅、および記録された高さと幅を再び指定して、ビュー上にメジャーコマンドを再起動します。最初のログでは、正しい値が返されます。 2番目のログでは、値は0にリセットされています。なぜですか? – Neilers
ディスプレイの幅と高さは何ですか?おそらくそれは0です –
残念なことに、それは0ではありませんでした。また、私が間違っている場合は私を修正しますが、このアプローチは、ビューが既に描画されているasumes。私が見つけようとしているのは、** 1です**最初の3つのウェイトが1、4番目のウェイトが0 ** ** 2となるように内側の線形レイアウトを設定します。**レイアウト、このモードで計算された身長と体重を得ることができるように** ** 3。**最初の3つのレイアウトのうちの2つが重み= 1、重み= 1の4つの重みを持つようにレイアウトを設定します。 2 ** 4。**この2番目のモードでは、それぞれの幅と高さを取得します** 5。**重さを元に戻してから、ビューを描画します – Neilers