0

コードから相対レイアウトを実装することで問題が発生しました。私が欲しいのは、TextView1が画面の左側にあり、TextView2が画面の右側に1行で配置されていることです。

XMLからは正常に機能しますが、コードからこれを実行することはできません...理由は何でしょうか?

この作業は問題ありません。

<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"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="@string/hello_world" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="TextView" />

</RelativeLayout>

これは機能しません(要素が重複している場合):

RelativeLayout rel = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.WRAP_CONTENT);
rel.setLayoutParams(params);

TextView t1 = new TextView(this);   
t1.setText("balbla_1");
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.MATCH_PARENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
lp1.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
t1.setLayoutParams(lp1);

TextView t2 = new TextView(this);
t2.setText("balbla_2");
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.MATCH_PARENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
lp2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
t2.setLayoutParams(lp2);        

rel.addView(t1);
rel.addView(t2);

setContentView(rel);

しかし、これはうまくいくでしょう:(に置き換えMATCH_PARENTWRAP_CONTENTください):

RelativeLayout rel = new RelativeLayout(this);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.WRAP_CONTENT);
rel.setLayoutParams(params);

TextView t1 = new TextView(this);   
t1.setText("balbla_1");
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
lp1.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
t1.setLayoutParams(lp1);

TextView t2 = new TextView(this);
t2.setText("balbla_2");
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
lp2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
t2.setLayoutParams(lp2);        

rel.addView(t1);
rel.addView(t2);

setContentView(rel);
4

1 に答える 1

1

JavaコードはXMLと完全に一致していません。重複しているのは、次のことを忘れたためです。

lp2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

あなたも無視しました:

lp1.addRule(RelativeLayout.CENTER_VERTICAL);

そして、あなたはMATCH_PARENTの代わりに幅に使用していますWRAP_CONTENT

于 2012-12-16T20:08:32.713 に答える