在dp中调整视图大小

时间:2017-12-07 18:52:57

标签: java android listview view

我试图以编程方式调整ListView中View的宽度,因为我希望它在DP中,而不是像素。

我的ListView生成一个RelativeLayout的实例,其中一个View填满了所有的屏幕(match_parent),还有一个TextView和一个按钮。

将视图设置为width = match_parent以按预期填充整个屏幕

enter image description here

我想要的是在我的适配器中具有不同的视图宽度。像基本视图总宽度的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值。我希望它适合任何屏幕。

感谢您的支持。

1 个答案:

答案 0 :(得分:0)

dp个单位只有px个单位乘以当前的屏幕密度,可以通过DisplayMetrics类获得:

float density = [some context].getResources().getDisplayMetrics().density;
int dp = (int) ([your px value] * density);