我想将动态创建的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);
然后将该像素设置为程序化使用...