How to make the height of a dynamically created TextView exactly 50dp in Android?
我想将动态创建的TextView的高度设置为50dp。我尝试使用代码
制作
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()); |