ボタンを使用してRelativeLayoutに配置するカスタムビューを作成しました。私が抱えている問題は、アンドロイド:layout_below = "@ id/customView"を使用してカスタムビューの下にボタンを置くと、customViewが完全な高さをとり、画面上にボタンを配置するスペースがなく、画面の下の境界線の下にあり、したがって目に見えない。 customViewのonMeasure()メソッドの最後の呼び出しで受け取ったサイズは、既に計算されている必要があります。つまり、他のすべてのビューサイズを考慮する必要がありますが、この場合、ボタンの高さはそうではありません。別のビュー要素を配置すると、カスタムビューが正しく測定されない
07-26 00:24:39.551 19930-19930/com.example D/TAG: width = 720 height = 1230
を同時に私は上のボタンを置く場合:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/darkBlueBackground"
tools:context="com.example.TimePickerActivity">
<com.example.TimePicker
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="5dp"
android:paddingRight="20dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:id="@+id/picker"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/picker"
android:layout_weight="1"
android:id="@+id/okButton"
android:text="OK"/>
これはonMeasure()により測定した、最終的なサイズである:ここでは
は私のレイアウトですcustomViewのすべてがきれいに見える、onMeasure()はcustomViewの正しい高さを受け取るので、ボタンのためのスペースがある。ここでは、その場合のレイアウトです:onMeasureから
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/okButton"
android:text="OK"/>
<com.example.TimePicker
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/okButton"
android:paddingLeft="5dp"
android:paddingRight="20dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:id="@+id/picker"/>
最終的なサイズが異なります。 07-26 00:24:39.551 19930-19930/com.example D/TAG: width = 720 height = 1134
カスタムビュー(TimePicker)は1ケースとISN」を正しく測定されたのはなぜ別の?
まだ動作しません –
あなたのボタンに 'layout_weight =" 1 "'属性がありますか?これは線形レイアウトに関連しています。垂直方向に積み重なったアイテムが2つしかない場合、垂直のLinearLayoutは同じように動作します。 –
ええ、私は実際には、ただ一つのボタンではなく2つのボタンでLinearLayoutを持っています( 'layout_weight'がなくてもまだ動作しません)。 –