【问题标题】:Setting density pixels programatically in Android not functioning correctly在 Android 中以编程方式设置密度像素无法正常工作
【发布时间】:2015-10-14 22:45:19
【问题描述】:

我有一个显示新闻项目的列表视图。

每条新闻可能/可能不包含图像。

如果它确实包含图像,那就太棒了!

如果它不包含图像,我将图像占位符设置为不可见,并调整其中包含的框架布局的大小。

我将首先显示我的列表视图的图像:

如您所见,with 的新闻项目正在正常工作。 但是没有图片的新闻项目不是!!。

在我的 XML 布局文件中,我将博客/新闻文本视图高度设置为 30dp。

        <TextView
            android:layout_width="match_parent"
            android:layout_height="30dp"

所以,当不存在图像时,我运行以下代码:

    if(no image is loaded)

        nimage.setVisibility(View.GONE); // set image placeholder to hidden
        // change frame layout height to 30dp (size of News/Blog)
        flayout1.getLayoutParams().height = (int)convertPixelsToDp(30, getContext()); 
        flayout1.requestLayout();

我的convertPixelsToDp() 函数是这样的:

public static float convertPixelsToDp(float px, Context context){
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float dp = px / (metrics.densityDpi / 160f);
    return dp;
}

这段代码应该可以工作,...我想。但很明显,正如您在上面看到的,高度没有设置正确。即 - 一些 TextView 被切断。

问题是,当我在较小的屏幕上运行时,它运行得很好,但它不应该与屏幕尺寸无关(使用 dp)...也许我的转换功能有问题?

非常感谢任何帮助!

【问题讨论】:

  • 我不明白你为什么不使用 wrap_content 作为 TextView 的布局高度。
  • 感谢修复一切!
  • 你介意接受我的回答吗?

标签: android xml layout screen pixel-density


【解决方案1】:

使用 wrap_content 作为 TextView 的布局高度。这应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2023-04-09
    • 1970-01-01
    • 2016-07-09
    相关资源
    最近更新 更多