2013-03-15 85 views
0

我一直在通過StackOverflow上的一堆示例來創建動態佈局。 我已經取得了一些進展,但現在已停滯在一個特定的錯誤。LinearLayout將不會填充屏幕的寬度

如何讓此代碼填充父級的寬度?

LinearLayout masterLayout = (LinearLayout) findViewById(R.id.button_views); 

     for(int i=0; i<(launchers.length/3+1); i++){ 
     layout[i] = new LinearLayout(getBaseContext()); 
     layout[i].setLayoutParams(new LinearLayout.LayoutParams(
       ViewGroup.LayoutParams.FILL_PARENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT)); 
     layout[i].setWeightSum(3); 


      for(int i1=0; i1<(3); i1++){ 

       launchers[i1] = new Button(this); 
       launchers[i1].setText(titles[i1]); 
       launchers[i1].setLayoutParams(new LinearLayout.LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT)); 
       launchers[i1].setOnClickListener(this); 
       layout[i].addView(launchers[i1]); 
      } 
      masterLayout.addView(layout[i]); 

代碼工作MOSTLY如所期望的,我缺少的部分是按鈕是偶數寬度,並且在屏幕上的整個長度均勻地間隔開。

+0

這是不是真的我清楚,你想要的按鈕(發射器)均勻分佈還是希望它們具有與其父視圖相同的寬度?如果是這樣,雙重檢查 啓動器[i1] .setLayoutParams(新的LinearLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 應該是然後 發射器[i1] .setLayoutParams(新的LinearLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); – QVDev 2013-03-15 10:26:55

+0

感謝您的回覆。結果應該是3個發射器在每行上均勻分佈3行。當我更換髮射器[i1]。 params FILL_PARENT然後我得到一個按鈕在屏幕上延伸的行。不是我想要的結果。 – 2013-03-15 10:38:08

+0

你可以附上圖像,你想要實現什麼以及你現在擁有什麼?我沒有完全得到你想要在這裏實現的目標 – QVDev 2013-03-15 10:58:05

回答

0

算出LinearLayout.LayoutParams在其結尾處有一個權重選項。以下是適合屏幕寬度的動態按鈕佈局系統的最終代碼。

LinearLayout masterLayout = (LinearLayout) findViewById(R.id.button_views); 

    for(int i=0; i<(launchers.length/3+1); i++){ 
    layout[i] = new LinearLayout(getBaseContext()); 
    layout[i].setLayoutParams(new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.FILL_PARENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT)); 
    layout[i].setWeightSum(3); 


     for(int i1=0; i1<(3); i1++){ 

      launchers[i1] = new Button(this); 
      launchers[i1].setText(titles[i1]); 
      launchers[i1].setLayoutParams(new LinearLayout.LayoutParams(
       ViewGroup.LayoutParams.FILL_PARENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f)); 
      launchers[i1].setOnClickListener(this); 
      layout[i].addView(launchers[i1]); 
     } 
     masterLayout.addView(layout[i]); 

什麼將有助於將是一個辦法,讓如果有人想在有一個去的按鈕來始終不散......

相關問題