85

私はRelativeLayoutこうして:

<RelativeLayout>
<TextView1/>
<TextView2/> // <-- View.VISIBLE OR View.GONE
<TextView3/>
<TextView4/>
</RelativeLayout>

それぞれが前のものの下に。TextViewで固定されています。TextViewandroid:layout_below

問題は、TextView2が存在する場合と存在しない場合があることです(View.VISIBLEまたはView.GONE)。の場合View.VISIBLEはすべて問題ありませんが、の場合はView.GONE、TextView3がTextView1の上にレンダリングされることになります。

これを修正するためにさまざまな方法を試しましたが、RelativeLayout「s」に捕らえられるたびに、「定義される」ルールの前にIDを参照することはできません。

ここで明らかな何かが欠けていることを願っています。

4

8 に答える 8

217

このタグを使用できます:

android:layout_alignWithParentIfMissing="true"

ドキュメントから:

true に設定すると、layout_toLeftOf、layout_toRightOf などでアンカーが見つからない場合に、親がアンカーとして使用されます。

于 2012-02-15T04:04:37.260 に答える
44

テキストビュー 2 と 3 を LinearLayout に配置し、線形レイアウトをテキストビュー 1 の下に保つことができます。

于 2010-07-19T07:47:30.007 に答える
12

belowTextView2 の可視性を更新するときに TextView3の属性を更新しないのはなぜですか? (コードでこれを行うと仮定します)

何かのようなもの

TextView tv = (TextView) findViewById(R.id.textview3);
RelativeLayout.LayoutParams lp =
    (RelativeLayout.LayoutParams) tv.getLayoutParams();
lp.addRule(RelativeLayout.BELOW, R.id.textview1);
((TextView) view).setLayoutParams(lp);
于 2010-07-19T07:23:05.493 に答える
8

この答えはあなたの特定の問題を解決しませんが、同様の問題を解決するので、うまくいけば、これは誰かを助けるでしょう。

相対レイアウトにTextView1と同等のものがないという状況がありました。したがって、私の状況では、TextView2がなくなった場合、TextView3を親の上部に揃えたいと思いました。TextView3に属性android:layout_alignWithParentIfMissing = "true"を追加することで、これを解決しました。http://developer.android.com/resources/articles/layout-tricks-efficiency.htmlを参照してください。

残念ながら、親でない限り、代替の配置アンカーを指定する方法がわかりません。

于 2011-07-14T21:59:03.783 に答える
7

INVISIBLEまたはを忘れてGONE、代わりにこれを使用します。

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();

params.height = 0;

params.setMargins(0,0,0,0);

view.setLayoutParams(params);
于 2011-09-02T18:14:35.063 に答える