由于刚开始接触android,对于android的一些属性与规则记不太清,导致在进行编码时走了一些弯路。如对于android中LisvtView在测试时,总是发现其的weight属性无效,其情况如下…… 前端xml中textview均设置了weight属性,如下 <TextView android:id="@+id/tv_Location" android:layout_width="0dp" android:layout_height="match_parent" android:hint="@string/location" android:layout_weight="1" android:paddingLeft="5dp" android:gravity="center" android:singleLine="true" /> 其调试时显示效果如下:
或 上述效果,根本未实现这4个TextView均分宽度。
查询相关资料后了解到在listview adpter中inflate时需要设置父参数,而当前使用的为 view=layoutInflater.inflate(R.layout.list_asset_item,null) 并未使用指定其父对象,导致其不能正常工作。然在将其指定父对象后: view=layoutInflater.inflate(R.layout.list_asset_item,viewGroup,false); 全部代码: public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder; if (view==null){ viewHolder=new ViewHolder(); view=layoutInflater.inflate(R.layout.list_asset_item,viewGroup,false); viewHolder.mTvTagID=view.findViewById(R.id.tv_TagID); viewHolder.mTvLocation=view.findViewById(R.id.tv_Location); viewHolder.mTvQuantity=view.findViewById(R.id.tv_Quantity); viewHolder.mTvCheckTime=view.findViewById(R.id.tv_Time); view.setTag(viewHolder); // parent.addView(view); }else{ viewHolder=(ViewHolder) view.getTag(); } AssetInfor bean=AssetItemList.get(i); viewHolder.mTvTagID.setText(bean.getTagId()); viewHolder.mTvLocation.setText(bean.getLocation()); viewHolder.mTvQuantity.setText(Integer.toString(bean.getQuantity())); return view; } 也并未实现愚想要的效果。 再次查看代码,才发现父布局是 ConstraintLayout
而layout_weight在constraintLayout中是不会起作用的,其作用于Linearlayout……也就是说再将constraintlayout改为LinearLayout即可OK,修改后布局效果如下——正常!
|