线性布局以编程方式划分

时间:2016-03-03 07:36:56

标签: java android

for (int i = 0; i < c.getCount(); i++)
{
    ChildLayout=new LinearLayout(getActivity());
    ChildLayout.setWeightSum(100);
    ChildLayout.setOrientation(LinearLayout.HORIZONTAL);
    new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
    ChildLayout.setId(i);

    Prd_txt = new TextView(getActivity());
    Prd_txt.setId(c.getInt(3));
    ProdStr_All.add(c.getString(4));
    ProdTxt_All.add(Prd_txt);
    Prd_txt.setPadding(8, 0, 0, 0);

    edit_phy = new EditText(getActivity());
    edit_phyAll.add(edit_phy);
    edit_phy.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
    edit_phy.setId(Dist_cat[k]);
    edit_phy.setGravity(Gravity.RIGHT);

    edit_trn = new EditText(getActivity());
    edit_trnAll.add(edit_trn);
    edit_trn.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
    edit_trn.setId(Dist_cat[k]);
    edit_trn.setGravity(Gravity.RIGHT);

    Total=new TextView((getActivity()));
    tot_all.add(Total);
    Total.setId(k);
    Total.setGravity(Gravity.RIGHT);
    Total.setTextSize((global_variables.ConvertPixels(getActivity(), 19)));

    LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT,50);
    LinearLayout.LayoutParams layoutParams3 = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT,16);

    ChildLayout.addView(Prd_txt, 0,layoutParams2);
    ChildLayout.addView(edit_phy, 1,layoutParams3);
    ChildLayout.addView(edit_trn, 2,layoutParams3);
    ChildLayout.addView(Total, 3,layoutParams3);
    if(i%2==0) 
    {
        ChildLayout.setBackgroundResource(R.color.colortablelight);
    }else
    {
          ChildLayout.setBackgroundResource(R.color.colortablemedium);
    }

    MainLayout.addView(ChildLayout,layoutParams);
                   c.moveToNext();
}

for(int m=0;m<ProdTxt_All.size();m++)
{
     ProdTxt_All.get(m).setText(ProdStr_All.get(m));
}

输出:
output

问题: 我想将我的线性布局划分为固定大小的Product weightsum 50和rest 16但是无法实现这一点,试图增加高度和宽度,但在不同的分辨率下它显示不同。所以尝试了权重。怎么解决?

2 个答案:

答案 0 :(得分:0)

@Rashmi S. 在XML上做这件事有什么问题?因为它易于处理,尤其是使用UI Designer软件或您所称的软件,从可维护性和可读性的角度来看它更清洁。这只是我的意见,如果你有理由这样做,可能还有另一种方法。

答案 1 :(得分:0)

通过同时使用WRAP_CONTENTweightLinearLayout将在照顾weight之前为内容计算并准备足够的空间。这就是为什么有时在使用xml在设计版面中设置视图时会看到此警告的原因。

enter image description here

为确保父视图正确地将孩子按体重分开,请在体重之前设置高度= 0(垂直)以及宽度= 0(水平)

LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT,50);
LinearLayout.LayoutParams layoutParams3 = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT,16);
相关问题