java根据屏幕分辨率以编程方式创建视图
我创建了一个实现ListAdapter的BaseAdapter。这个BaseAdapter读取一个JSON文件,并通过自定义布局填充我的ListView
在这个JSON文件中,我有一个布尔值(active=true或active=false)。如果active为true,我会放大自定义布局,一切正常,但如果active为false,我需要在此自定义布局中创建一个新视图。这是我的代码:
if (!active) {
JSONObject notifications = jsonData.getJSONObject("notifications");
String message = notifications.getString("message");
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
params.height = 70;
TextView warning = new TextView(Controller.getContext());
warning.setText(message);
warning.setTextColor(Color.WHITE);
warning.setBackgroundColor(Color.RED);
warning.setGravity(Gravity.CENTER);
warning.setPadding(10, 0, 10, 0);
warning.setLayoutParams(params);
// contentFrame is a RelativeLayout where the view is created;
viewHolder.contentFrame.getLayoutParams().height = 320;
viewHolder.contentFrame.addView(warning);
}
我的问题是:
params.height = 70;
viewHolder.contentFrame.getLayoutParams().height = 320;
我是说我的文本视图高出70像素,而我的RelativeLayout现在高出320像素
它在我的手机上看起来不错,但如果我在其他分辨率的手机上测试,它看起来会不一样,对吗
有没有办法根据屏幕分辨率创建视图并定义高度或宽度?也许创建屏幕分辨率10%的视图?这是个好习惯吗?对于这样的事情,最好的办法是什么
# 1 楼答案
不要使用硬编码像素值,而是使用DPs。DPs考虑了设备密度,因此无论应用程序运行在哪台设备上,视图都几乎相同
更多信息请参见this
所以,在你的维度中定义它。xml:
然后这样读: