2014-09-19 65 views
1

我試圖創建一個ImageButtons數組,這些ImageButtons都是隨機選擇的3個圖像之一顯示在屏幕的邊界內。問題是大多數按鈕出現在屏幕外/根本不顯示。我在運行時檢查了座標,它們都在屏幕的邊界內,但我看不到圖像。大多數時候我能看到一個,有時兩個。總共應該有12個。動態創建ImageButtons不可見

寬度和高度是在onCreate()中計算的屏幕度量,其中還調用了createBalloons()。圖像[]數組包含drawable的id。

private void createBalloons() { 
    LinearLayout layout = (LinearLayout)findViewById(R.id.container); 

    for (int i = 0; i < GameActivity.MAX_BALLOONS; i++) { 
     balloons[i] = new ImageButton(this); 
     setupBalloon(balloons[i], i); 
     layout.addView(balloons[i]); 
    } 
} 

private void setupBalloon(ImageButton b, int i) { 
    int imageId = (int)(Math.random() * images.length); 
    b.setImageResource(images[imageId]); 
    b.setBackgroundColor(Color.TRANSPARENT); 
    b.setScaleX(0.4f); 
    b.setScaleY(0.4f); 
    b.setX((float) (Math.random() * (width - b.getWidth()))); 
    b.setY((float) (Math.random() * (height - b.getHeight()))); 
    b.setVisibility(View.VISIBLE); 
} 
+0

那麼你必須設置佈局參數並添加圖像你想要什麼? – 2014-09-19 05:31:54

+0

你需要設置Widht和你的按鈕的高度。 – Techfist 2014-09-19 05:34:21

+0

我認爲你不能用'LinearLayout'來做你想要的,用'FrameLayout'來代替。 – zozelfelfo 2014-09-19 05:36:02

回答

0

與此

private void setupBalloon(ImageButton b, int i) { 
    int imageId = (int)(Math.random() * images.length); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT); 
    b.setLayoutParams(params); 
    b.setImageResource(images[imageId]); 
    b.setBackgroundColor(Color.TRANSPARENT); 
    b.setScaleX(0.4f); 
    b.setScaleY(0.4f); 
    b.setX((float) (Math.random() * (width - b.getWidth()))); 
    b.setY((float) (Math.random() * (height - b.getHeight()))); 
    b.setVisibility(View.VISIBLE); 
} 

而且取代setUpballons,爲u提到的12個按鍵也純屬偶然您的佈局不會成爲持有所有的人,可以嘗試設置滾動型父的LinearLayout中。