2016-07-25 4 views
0

ボタンを使用して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」を正しく測定されたのはなぜ別の?

答えて

1

com.example.TimePickerビューにandroid:layout_height=wrap_content"を設定してみてください。高さをmatch_parentに設定すると、ビューは親の高さを塗りつぶし、ボタンのためのスペースは残されません。

+0

まだ動作しません –

+0

あなたのボタンに 'layout_weight =" 1 "'属性がありますか?これは線形レイアウトに関連しています。垂直方向に積み重なったアイテムが2つしかない場合、垂直のLinearLayoutは同じように動作します。 –

+0

ええ、私は実際には、ただ一つのボタンではなく2つのボタンでLinearLayoutを持っています( 'layout_weight'がなくてもまだ動作しません)。 –

関連する問題