如何在Android中将动态创建的TextView的高度精确设置为50dp?

How to make the height of a dynamically created TextView exactly 50dp in Android?

我想将动态创建的TextView的高度设置为50dp。我尝试使用代码

制作dimens.xml文件

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

然后我用

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

最后我只使用生成的TextView。

1
textView.setHeight(pixels);

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


未通过编程方式设置高度或宽度时,Android引发异常

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

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


您可以使用以下设置:

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

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

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


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

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

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


您可以使用以下内容

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