在 Android 中以编程方式设置密度像素无法正常工作
Setting density pixels programatically in Android not functioning correctly
我有一个显示新闻项目的列表视图。
每条新闻可能包含/可能不包含图像。
如果它确实包含图像,那就太棒了!
如果它不包含图像,我将图像占位符设置为不可见,并调整它包含在其中的框架布局的大小。
我将首先显示我的列表视图的图像:
如您所见,新闻 和 图片正常工作。
但是新闻没有图片就不是!!.
在我的 XML 布局文件中,我将 Blog/News 文本视图高度设置为 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 的布局高度。这应该可以解决您的问题。
我有一个显示新闻项目的列表视图。
每条新闻可能包含/可能不包含图像。
如果它确实包含图像,那就太棒了!
如果它不包含图像,我将图像占位符设置为不可见,并调整它包含在其中的框架布局的大小。
我将首先显示我的列表视图的图像:
如您所见,新闻 和 图片正常工作。 但是新闻没有图片就不是!!.
在我的 XML 布局文件中,我将 Blog/News 文本视图高度设置为 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 的布局高度。这应该可以解决您的问题。