看一下这段代码。 我在最后一行收到错误,因为我正在传递一个'索引'而不是资源。我认为这是一个皮棉问题,并试图压制它。 然后我注意到我只是在构建发布时才收到此错误。构建调试时它工作正常。我完全无能为力。任何人都可以对我做错的事情有所了解。
//Get paddingLeft, paddingRight
int[] attrsArray = new int[]{
android.R.attr.paddingLeft, // 0
android.R.attr.paddingRight, // 1
};
TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray);
if (ta == null) return;
mPaddingLeft = ta.getDimensionPixelSize(0, 0);
mPaddingRight = ta.getDimensionPixelSize(1/*error here*/, 0);
答案 0 :(得分:58)
我在尝试构建签名的apk时遇到了同样的问题。
通过添加@SuppressWarnings("ResourceType")
来解决此问题以抑制警告,现在它可以正常工作。
答案 1 :(得分:7)
@StyleableRes int index = 1;
mPaddingRight = ta.getDimensionPixelSize(index, 0);
答案 2 :(得分:1)
所以我在Kotlin中解决这个问题的方法如下:(thanks to Simons post)
companion object {
private val attributes = intArrayOf(
android.R.attr.paddingLeft,
android.R.attr.paddingTop,
android.R.attr.paddingBottom,
android.R.attr.paddingRight)
}
init {
val arr = context.obtainStyledAttributes(attrs, attributes)
@StyleableRes
var i = 0
val leftPadding = arr.getDimensionPixelOffset(i++, 0)
val topPadding = arr.getDimensionPixelOffset(i++, 0)
val rightPadding = arr.getDimensionPixelOffset(i++, 0)
val bottomPadding = arr.getDimensionPixelOffset(i, 0)
arr.recycle()
}
答案 3 :(得分:0)
TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.paddingLeft, outValue, true);
int paddingLeft = outValue.data;
对android.R.attr.paddingRight
重复相同的操作