0

次のxmlを持つ相対レイアウトがあります。

<RelativeLayout
    android:id="@+id/date_bar_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/navigation_bar_layout"
    android:background="@color/light_gray"
    android:gravity="center">

    <TextView
        android:id="@+id/detaildatetextview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text=""
        android:textColor="@color/black"
        android:textSize="20dp"
        android:textStyle="bold" />
</RelativeLayout>

ご覧のとおり、既にテキストビューが含まれています。コードのどこかで、テキスト ビューの前にプログラムで画像を追加する必要があります。つまり、最初に画像が表示され、次にテキスト ビューが表示されます。しかし、コードを実行すると画像が表示され、テキストビューは表示されません。これから私を助けてください。私の実装は次のとおりです。

image  = new ImageView(getApplicationContext());
image.setId(0);
dateText = (TextView) dateBarLayout.findViewById(R.id.detaildatetextview);
dateText.setText("Dummy text");
RelativeLayout.LayoutParams params = (LayoutParams) dateBarLayout.getLayoutParams();
params.addRule(RelativeLayout.LEFT_OF, dateText.getId());                       
String icon = "drawable/"+ path;
icon = icon.replaceAll("-", "_");
icon = icon.toLowerCase();
int imageResource = this.getApplicationContext().getResources().getIdentifier(icon, null,this.getApplicationContext().getPackageName());
image.setImageResource(imageResource);
dateBarLayout.addView(image);

どこが間違っているのかわかりません..これから抜け出すのを手伝ってください. 前もって感謝します...:-)

4

3 に答える 3

0

以下のコードをJavaファイルに追加するsetcontentview(R.layout.main);と、問題が解決します。

ImageView image = new ImageView(this);
RelativeLayout dateBarLayout=(RelativeLayout)findViewById(R.id.date_bar_layout);
TextView dateText = (TextView) dateBarLayout.findViewById(R.id.detaildatetextview);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.LEFT_OF, dateText.getId());
image.setLayoutParams(params);
image.setImageResource(R.drawable.ic_launcher);
dateBarLayout.addView(image);
于 2012-09-13T06:08:25.273 に答える
0

ビューにレイアウト パラメータを設定して相対レイアウトに配置する必要があります。そうしないと、レイアウトの左上のビューに重なってしまうため、addView(View) の代わりにhttp://developer.android.comを使用します。 /reference/android/view/ViewGroup.html#addView(android.view.View, android.view.ViewGroup.LayoutParams)メソッドを使用してビューをレイアウトに追加します。したがって、コードを次のように変更します。

image  = new ImageView(getApplicationContext());
    image.setId(0);

    dateText = (TextView) dateBarLayout.findViewById(R.id.detaildatetextview);

    dateText.setText("Dummy text");



        RelativeLayout.LayoutParams params = (LayoutParams) dateBarLayout.getLayoutParams();
    params.addRule(RelativeLayout.LEFT_OF, dateText.getId());

        String icon = "drawable/"+ path;
        icon = icon.replaceAll("-", "_");
            icon = icon.toLowerCase();

        int imageResource = this.getApplicationContext().getResources().getIdentifier(icon, null,this.getApplicationContext().getPackageName());

        image.setImageResource(imageResource);
                    dateBarLayout.addView(image, params);
于 2012-09-13T05:37:56.643 に答える