2013-03-15 46 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]); 

什么将有助于将是一个办法,让如果有人想在有一个去的按钮来始终不散......