gpt4 book ai didi

java - 根据屏幕分辨率以编程方式创建 View

转载 作者:行者123 更新时间:2023-12-01 18:05:42 27 4
gpt4 key购买 nike

我创建了一个实现 ListAdapter 的 BaseAdapter。此 BaseAdapter 读取 JSON 文件并填充我的 ListView,从而扩展自定义布局。

在此 JSON 文件中,我有一个 boolean 值(active = true 或 active = false)。如果 active 为 true,我会膨胀自定义布局,一切都很好,但如果 active 为 false,我需要在此自定义布局中创建一个新 View 。这是我的代码:

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;

我是说我的 TextView 高 70 像素,而我的relativelayout 现在高 320 像素。

它在我的手机上看起来不错,但如果我在其他分辨率的手机上测试,它看起来会不一样,对吗?

有没有办法创建一个View并根据屏幕分辨率定义高度或宽度?也许创建屏幕分辨率大小 10% 的 View ?这是一个好的做法吗?对于这样的事情最好的方法是什么?

最佳答案

不要使用硬编码像素值,而是使用 DP。 DP 考虑了设备密度,因此无论应用在哪种设备上运行, View 看起来都几乎相同。

参见this了解更多信息。

所以,在你的dimens.xml中定义它:

<resources>
<dimen name="my_width">320dp</dimen>
</resources>

然后像这样阅读:

int width =  getResources().getDimensionPixelSize(R.dimen.my_width);

关于java - 根据屏幕分辨率以编程方式创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36609502/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com