【问题标题】:Resize View in dp在 dp 中调整视图大小
【发布时间】:2017-12-08 03:09:08
【问题描述】:

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

我的 ListView 生成一个 RelativeLayout 的实例,其中一个 View 填满了整个屏幕(match_parent),一个 TextView 和一个按钮在里面。

View 设置为 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 值。我希望它适合任何屏幕。

感谢您的支持。

【问题讨论】:

标签: java android listview view


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多