2

私は2次元を持っています。ImageView の配列。これらは、プログラムによって RelativeLayout に設定されます。しかし、アプリを起動すると、それらは表示されません。これは私のコードです:

private void setMap(ImageView[][] fields){
    RelativeLayout relLay = (RelativeLayout) findViewById(R.id.screen);
    OnClickListener listener = new MyOnClickListener();
    for (int i = 0; i < numFieldsHeight; i++){
        for (int j = 0; j < numFieldsWidth; j++){
            ImageView img = new ImageView(MapActivity.this);
            img.setImageResource(R.drawable.map);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            if (j != 0)
                params.addRule(RelativeLayout.RIGHT_OF, fields[i][j-1].getId());
            else
                params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
            if (i != 0)
                params.addRule(RelativeLayout.BELOW, fields[i-1][j].getId());
            else
                params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
            params.height = fieldLength;
            params.width = fieldLength;
            img.setVisibility(View.VISIBLE);
            img.setId(getFieldId(j,i));
            img.setOnClickListener(listener);
            fields[i][j] = img;
            relLay.addView(fields[i][j], params);
        }
    }
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000" >

    <RelativeLayout 
        android:id="@+id/relLayDiffSeekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        ...

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/screen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:background="#222222" >

    </RelativeLayout>

</RelativeLayout>

RelativeLayout「スクリーン」のその他の属性は、コードで設定されます。しかし、これは機能します。RelativeLayout を見ることができます。ImageViews だけが欠落しています。

スローされる例外はありません。私を助けてください!

------! 編集 ! - - -

申し訳ありませんが、このコードは実際に機能しています。問題は、変数 fieldLength を 0 以外に設定するのを忘れていたことです。:)

4

2 に答える 2

0
Drawable d = getResources().getDrawable(R.drawable.map);
d.setBounds(0, 0, 50, 50);
img.setImageDrawable(d);
于 2013-09-26T11:48:10.980 に答える
0
public void horizontalScrollGalleryLayout () {
    sv=new HorizontalScrollView(this);
    LinearLayout llh = new LinearLayout(this);
    llh.setOrientation(LinearLayout.HORIZONTAL);
    LinearLayout.LayoutParams layoutParamsTV = new LinearLayout.LayoutParams(90,90);
    LinearLayout.LayoutParams layoutParamsLL = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    LinearLayout.LayoutParams layoutParamsLLD = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    layoutParamsTV.setMargins(10, 5, 5, 5);
    for(int k=0;k<6;k++)
    {   
        LinearLayout llv = new LinearLayout(this);
        for (int i=0; i<4; i++) {
            llv.setOrientation(LinearLayout.VERTICAL);
            img=new ImageButton(this);
            try {
                img.setBackgroundResource(integerIDs[total]);
            } catch (Exception e) {

                e.printStackTrace();
            }
            llv.addView(img, layoutParamsTV);
        }
        llh.addView(llv, layoutParamsLL);
        llh.setBackgroundColor(Color.TRANSPARENT);
    }
    sv.setBackgroundColor(Color.GRAY);
    sv.addView(llh, layoutParamsLLD);
    setContentView(sv);

}

これは解決策の1つになる可能性があります...あなたの問題のためにマトリックスのグリッドを作成するため.試してみてください...問題があれば教えてください

于 2013-09-26T11:59:46.050 に答える