私には習慣がありますView
。ビューのコンストラクターで、2 つのサブビューを作成して追加します。ただし、使用するLayoutParams.addRule()
といくつかの問題が発生します。仕事などのルールCENTER_HORIZONTAL
ですが、使おうとするABOVE
とサブビューが高さ0になってしまいます。
コンストラクターのコードは次のとおりです。
setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
mLayoutParams = new LayoutParams(width, height);
mLayoutParams.leftMargin = left;
mLayoutParams.topMargin = top;
mImage = new ImageView(getContext());
mImage.setImageDrawable(getResources().getDrawable(R.drawable.my_image_drawable));
mImage.setScaleType(ScaleType.FIT_XY);
mImage.setId(R.id.my_image_id);
addView(mImage, mLayoutParams);
mText = new TextView(getContext());
mText.setText(R.string.my_text);
mText.setId(R.id.my_text_id);
LayoutParams textParams = new LayoutParams(200, 40);
// textParams.addRule(CENTER_HORIZONTAL, TRUE); //Works
textParams.addRule(ABOVE, mImage.getId()); //Doesn't work
addView(mText, textParams);
デバイス モニターを使用してエミュレーターでビューを調べるとlayout_height
、テキストの が 40 であることがわかりますが、上部、下部、および高さのパラメーターはすべて 0measuredHeight
です。画面の幅と同じように見えます。
- ルールの追加に何か問題がありますか?
- ルールを追加するより良い場所はありますか? 最初に何かが起こる必要がありますか?
- 他の選択肢はありますか?高さをFILL_PARENT
TextView
、重力 BOTTOM にし、その下マージンを画像の高さに設定することはできますが、テキストの上に別のビューを追加できるようにする必要がありますが、これは機能しません。