如何在Android中使动态创建的TextView的高度正好为50dp



我想将动态创建的TextView的高度设置为50dp。我尝试用代码制作一个dimens.xml文件

<dimen name="imageview_height">50dp</dimen>

然后我用

int pixels = getResources().getDimensionPixelSize(R.dimen.imageview_height);

最后在生成的文本视图上,我只是使用。

textView.setHeight(pixels);

但是,当我运行它时,我的应用程序崩溃并说应用程序名称不断停止。

你可以

这样设置它:

textView.setLayoutParams(new LayoutParams(width, height));

但是根据布局类型,有不同的布局参数。使用视图所在的布局。例如:如果您的视图位于 LinearLayout 中,请使用 LinearLayout.LayoutParams

有关更多信息,请参阅此帖子: Android 以编程方式设置自定义视图的高度和宽度

Android 在未以编程方式设置高度或宽度时引发异常

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) someLayout.getLayoutParams();
params.height = 130;
someLayout.setLayoutParams(params);

因此,通过上面的代码,我们获取视图本身的布局参数,然后以编程方式设置高度

您可以使用以下内容进行操作

int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());

从 dps -> 像素计算......

final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);

然后将该像素设置为程序化使用...

最新更新