[英]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_CONTENT
和weight
, LinearLayout
将在照顾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.