2016-11-24 2 views
0

の画像ビューを動的に作成する必要があります。 下の写真を参照してください。ここでDynamiclly Imgeviewsを作成

enter image description here

私のソースです。私の見解は、この

enter image description here

のように表示しながら

 for (int i = 0; i < 9; i++) { 

     RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     ImageView catImg = new ImageView(getApplicationContext()); 
     catImg.setImageResource(bottDrawableArr[i]); 
     catImg.setId(View.generateViewId()); 
     int dp = (int) utiles.convertDpToPixel(27, getApplicationContext()); 
     params1.height = dp; 
     params1.width = dp; 
     ImageView dotImg = new ImageView(getApplicationContext()); 
     dotImg.setImageResource(R.mipmap.dot); 
     dotImg.setId(View.generateViewId()); 

     params2.addRule(RelativeLayout.BELOW, dotImg.getId()); 
     dockBg.addView(catImg, params1); 
     dockBg.addView(dotImg, params2); 

    } 

しかし、私は私の願望のビューを取得することができません、

は、私は、各画像の下にドットを入れてみましたが、それを達成することができません。あなたはdotImgの下dotImgを置くためにルールを追加しようとしているように任意のヘルプは

+0

あなたが作成する必要がありますかコードを介して動的にそれらを? RecyclerViewとViewHoldersを使用してDrawableリソースのリストをアダプタに渡すことができますか? –

+0

私はコードを介して作成したい、その単純な配列アダプタの使用はありません。 –

+0

RecyclerViewやviewHolderのような他の方法であれば、私のコードを使用することに制限はありません。 –

答えて

1

最良の方法は、いくつかのLinearLayoutと協力して、このような何か:

LinearLayout layout = new LinearLayout(this); 
layout.setOrientation(LinearLayout.HORIZONTAL); 

for (int i = 0; i < 9; i++) { 

    LinearLayout layoutChild = new LinearLayout(this); 
    layoutChild.setOrientation(LinearLayout.VERTICAL); 

    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    ImageView catImg = new ImageView(getApplicationContext()); 
    catImg.setImageResource(bottDrawableArr[i]); 
    catImg.setId(View.generateViewId()); 
    int dp = (int) utiles.convertDpToPixel(27, getApplicationContext()); 
    params1.height = dp; 
    params1.width = dp; 
    ImageView dotImg = new ImageView(getApplicationContext()); 
    dotImg.setImageResource(R.mipmap.dot); 
    dotImg.setId(View.generateViewId()); 

    params2.addRule(RelativeLayout.BELOW, dotImg.getId()); 
    layoutChild.addView(catImg, params1); 
    layoutChild.addView(dotImg, params2); 
    layout.addView(layoutChild); 
} 

dockBg.addView(layout); 

注:それはいくつかのルールを設定するなどの不要なプロパティを削除する方が良いでしょう...

+0

110%right.Thanks –

0
params2.addRule(RelativeLayout.BELOW, dotImg.getId()); 

をにappriciatedされるコードのこの行が見えます。それをcatImg.getId()に置き換えると、問題が解決するはずです。

RecyclerViewを検討することをお勧めします。静的配列(常に同じ項目)の場合は、新しいレイアウトファイルを作成し、必要なときにそれを膨張させることができます。

+0

は基本的に静的配列ではありません。 –

+0

でも正しいです。 RecyclerViewは第2位のオプションです –

関連する問題