繁体   English   中英

线性布局以编程方式划分

[英]Linear layout dividing programmatically

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

输出:
输出

问题:我想将线性布局划分为乘积权重为50的固定大小,其余为16,但无法实现,试图增加高度和宽度,但以不同的分辨率显示不同。 因此尝试了weightsum。 怎么解决?

@Rashmi S在XML上这样做有什么问题? 因为它更容易处理,尤其是使用UI Designer软件或您所谓的工具,并且从可维护性和可读性的角度来看,它更干净。 那只是我的意见,以防万一您有理由这样做,可能还有替代方法。

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

在此处输入图片说明

为确保父视图正确地按权重分隔子级,请在权重之前将高度设置为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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM