2013-09-26 61 views
2

我有一個2-dim。 ImageViews數組。它們以編程方式設置爲RelativeLayout。但是當我啓動應用程序時,他們根本不會出現。 這是我的代碼:ImageViews以編程方式設置不出現

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的東西。 非常感謝您的幫助! :)

+1

什麼佈局你想要有?這看起來像一個GridView,所以你爲什麼不使用GridView?也許一個relLay.invalidate()會顯示添加的圖像。 –

+0

發佈一條XML的活動請 –

+0

invalidate()沒有幫助 – Garrarufa

回答

0
Drawable d = getResources().getDrawable(R.drawable.map); 
d.setBounds(0, 0, 50, 50); 
img.setImageDrawable(d); 
+0

不幸的是,這並沒有改變什麼 – Garrarufa

+0

嘗試調用relLay.invalidateViews()完成後。 – Autocrab

+0

不可能,此功能不存在。 – Garrarufa

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

} 

這可能是解決方案之一......對。嘗試它創建矩陣 的網格,你的問題...任何問題讓我知道

+0

我試過了,但仍然是同樣的問題。我將所有ImageView都更改爲按鈕,並嘗試使用它的代碼,但我仍然無法看到它們。 – Garrarufa

+0

檢查編輯一個這將創建一個Grid的動態可縮放矩陣6 * 4 – nitesh

+0

實際上我不想使用GridView。對於我想要的,這很複雜。我需要一個沒有變化數量的二次按鈕的字段,它們彼此相鄰放置,兩者之間沒有空格。該字段可能無法滾動,每個按鈕都必須可見,並且必須始終保持在同一個位置。我希望它看起來像一張圖片,但每個按鈕都必須單獨着色和點擊。 – Garrarufa

相關問題