垂直方向のプログレスバーのようなカスタムビューがあります。これは単なるカスタムビューであり、キャンバスに描画して下から上に完了率で塗りつぶします。私のxmlには、カスタムコントロールの上にテキストがあり、下にテキストがあります(これらのうち、左側に1つ、右側に1つ、右側に1つあります)。
<RelativeLayout android:layout_width="150dp"
android:layout_height="fill_parent" android:layout_alignParentRight="true">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/bar_right_text" android:text="Right"
android:layout_alignParentTop="true" android:gravity="center_horizontal" />
<com.myApp.VBarView android:id="@+id/right_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/bar_right_text"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/bar_right_time_text" android:text="Time Remaining" android:layout_below="@id/right_bar" android:gravity="center_horizontal" />
</RelativeLayout>
カスタムビューでは、考えられるあらゆる方法で高さをチェックしますが、常に画面の下部までの高さを取得します
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// h here is 489
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
int myHt = getHeight();
int myMeasHt = getMeasuredHeight();
Rect canvasRct = canvas.getClipBounds();
// all of these (myHt, myMeasHt, and canvasRct.getHeight()) are all 489
}
これまで、レイアウトのビューを反転させてみたので、上部のテキストが最初(上に配置)、下部のテキストが2番目(下部に配置)、カスタムコントロールが最後(レイアウト_下部のテキストの上)になり、両方がmatch_parentになります。とwrap_content、無駄に。線形レイアウトに変更しようとしましたが、それでも良い結果は得られませんでした。
コードで示されている場合、上部のテキストは表示されますが、下部のテキストは表示されません。カスタムビューが下部のテキストの上にlayout_aboveになるように順序を変更すると、下部のテキストが表示されるように描画領域が上に移動しましたが、上部のテキストは覆われていました。私が一番下のテキストがなくなったと言うとき、私は単に覆われただけでなく、なくなったことを意味することに注意してください。私の最後のテストは、layout_heightをレイアウトの「350dp」にハードコーディングすることでした。
すべての場合において、高さがハードコーディングされている場合でも、この特定のデバイスでは常に489の高さが得られます。画面の中央部分を描画して残りをそのままにしておくために何をする必要があるのか理解できません。カスタムビューはレイアウトの最後のものと見なされますか?これを機能させる唯一の方法は、カスタムビューがレイアウトの最後になるように順序を変更して、カスタム領域の下部が下部のテキストの上に表示され、下部のテキストが引き続き表示されるようにしてから、手動で追加することです。上部に約150(つまり、onDraw()に提供されるキャンバスにゼロを書き込まないでください)なので、上部のテキストはカバーされません。幸い、私が描いているグラフィックは半透明なので、テキストが覆われているか、なくなったかを確認できます。
誰かがこれがどのように機能することになっているのかについてもっと情報を持っていますか?実際の問題よりも混乱したことを説明することができましたか?
ありがとう、gb