iTVLobby项目中问题以及解决方案(1)

本文详细介绍了在Android应用开发中遇到的资源ID与字符串资源匹配问题,包括TextView赋值错误的解决方法及针对不同分辨率的解决方案。通过分析问题原因并提供关键函数代码,为开发者提供了实用的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iTV项目是我正式接收的第一个项目,从文案到实现的全程把控。项目进度已经过半需要将出现的一些问题整理。


1、 Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x497,在TextView 赋值后经常会出现这种情况,细想以后原来设置的值是int类型,TextView具有从R文件获得String的功能,所以如果传入是int值将会默认去从R文件中搜索,如果没有则会出现上述问题。


2、对于分辨率问题,至今没有什么好的解决方案,暂时采用将所有采用坐标位置控制位置的控件都加入比例控制。整体思路是原始分辨率大小的基础上按屏幕比例增幅。

关键函数是,缺点是不能对于xml文件的根节点控件进行控制,所以在项目中已经避免了该项冲突。

public static void SetAutoScreenImageView(View view,int width,
int height, int left, int top, int right, int bottom) {
android.view.ViewGroup.MarginLayoutParams param = (android.view.ViewGroup.MarginLayoutParams) view
.getLayoutParams();
if (width != 0)
param.width = (int) (width * Define._PX_X_COUNT);
if (height != 0)
param.height = (int) (height * Define._PX_Y_COUNT);
if (0 == left && 0 == top) {
} else {
if (0 != left)
param.leftMargin = (int) (left * Define._PX_X_COUNT);
if (0 != top)
param.topMargin = (int) (top * Define._PX_Y_COUNT);
if (0 != right)
param.rightMargin = (int) (right * Define._PX_X_COUNT);
if (0 != bottom)
param.bottomMargin = (int) (bottom * Define._PX_Y_COUNT);
}
view.setLayoutParams(param);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值