我有ListView
,每行显示不同的百分比。
我想为此目的更改内部布局宽度之一(内部充气counterView
)。
例如:
如果listview
中的第一个值项是10%,那么宽度也设置为10px
如果第二个值项为50%,则宽度也变为50px
这样的事情:我该怎么做?
我尝试了这些代码,但它不起作用且width
没有改变:
(我在match_parent
内为layout
定义了XML
宽度,我想以编程方式更改它
public class MyAdapterScores extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.scores_layout,null,true);
//I wanna change 'relativeLayoutRightSqure' width inside 'scores_layout'
View layout = convertView.findViewById(R.id.relativeLayoutRightSqure);
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) layout.getLayoutParams();
//variable precentage has value
p.width=precentage ;
layout.requestLayout();
答案 0 :(得分:0)
您不能将宽度设置为我认为的百分比。我没有测试过这个解决方案,但是试一试!可能会工作!
一种解决方案可能是将宽度设置为显示器总宽度的百分比:
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int layoutWidth = size.x * (percentage / 100)
然后您可以使用该变量“layoutWidth”来设置所需布局的宽度。
答案 1 :(得分:0)
请使用以下代码
RelativeLayout layout = convertView.findViewById(R.id.relativeLayoutRightSqure);
RelativeLayout.LayoutParams param=layout.getLayoutParams();
param.width=precentage ;
layout.setLayoutParams(param);
答案 2 :(得分:0)
我发现了问题!
问题是同时为我的内部android:layout_toRightOf
布局视图定义了android:layout_toLeftOf
和counterView
导致设置宽度不起作用!!
(
参考上面的代码(relativeLayoutRightSqure
):
View layout = convertView.findViewById(R.id.relativeLayoutRightSqure);
)