我试图以编程方式调整ListView中View的宽度,因为我希望它在DP中,而不是像素。
我的ListView生成一个RelativeLayout的实例,其中一个View填满了所有的屏幕(match_parent),还有一个TextView和一个按钮。
将视图设置为width = match_parent以按预期填充整个屏幕
我想要的是在我的适配器中具有不同的视图宽度。像基本视图总宽度的25%,50%或75%。
mRelativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(**[VALUE I NEED HERE]**, mRelativeLayout.getLayoutParams().height));
ImageView设置为width = match_parent
所以这是我的ViewList适配器中代码的相关部分:
RelativeLayout mRelativeLayout = (RelativeLayout) convertView.findViewById(R.id.test_layout);
mRelativeLayout.setBackgroundResource(arrayListName.myColor);
if (arrayListName.myColor == R.color.custom ) {
dayviewLayout.setLayoutParams(new RelativeLayout.LayoutParams( 25% , dayviewLayout.getLayoutParams().height));
}
if (days.mMoodColor == R.color.custom2) {
dayviewLayout.setLayoutParams(new RelativeLayout.LayoutParams( 50% , dayviewLayout.getLayoutParams().height));
}
if (days.mMoodColor == R.color.custom3) {
dayviewLayout.setLayoutParams(new RelativeLayout.LayoutParams( 75% , dayviewLayout.getLayoutParams().height));
}
25-50-75%显然是错误的,因为它只需要int值。我希望它适合任何屏幕。
感谢您的支持。
答案 0 :(得分:0)
dp
个单位只有px
个单位乘以当前的屏幕密度,可以通过DisplayMetrics
类获得:
float density = [some context].getResources().getDisplayMetrics().density;
int dp = (int) ([your px value] * density);