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

时间:2017-04-06 01:34:54

标签: android android-layout textview

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

创建dimens.xml文件
<dimen name="imageview_height">50dp</dimen>

然后我用

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

最后在生成的TextView上我只使用。

textView.setHeight(pixels);

然而,当我运行它时,我的应用程序崩溃,并说应用程序名称一直停止。

4 个答案:

答案 0 :(得分:1)

您可以使用此设置:

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

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

有关详细信息,请参阅此帖子:Android set height and width of Custom view programmatically

答案 1 :(得分:0)

如果没有以编程方式设置高度或宽度,Android会抛出异常

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

所以通过上面的代码,我们得到了视图本身的布局参数,然后以编程方式设置高度

答案 2 :(得分:-1)

您可以使用以下

进行操作
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());

答案 3 :(得分:-1)

从dps计算 - &gt;像素......

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

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