2016-11-24 70 views
0

我必須創建動態列表Imageview連續,每個Imageview下有一個其他Imageview(點可繪製)。 看到下面的照片這是我期望的看法。Dynamiclly創建圖像

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); 

    } 

,但我無法讓我的願望來看,

,而我的觀點表明這樣

enter image description here

我試圖把點每幅圖像下卻無法實現這一目標。任何幫助將appriciated

+0

你必須創建他們動態通過代碼?或者你可以使用RecyclerView和ViewHolders並將可繪製資源列表傳遞給適配器? –

+0

我想通過代碼創建,其簡單的數組無需使用Adapter。 –

+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()); 

這行代碼看起來像你想添加規則,把dotImgdotImg下方。用catImg.getId()代替,應該可以解決你的問題。

雖然考慮一個RecyclerView可能是一個好主意,或者如果它是一個靜態數組(總是相同的項目),那麼你可以創建一個新的佈局文件,並在需要時將它膨脹。

+0

基本上它不是靜態數組它可能會改變 –

+0

你也是對的。 RecyclerView是第二好的選擇 –