在自定义TextView
中,我试图获取text
属性的值(例如)。
TypedArray values = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.TextView);
String text = values.getString(com.android.internal.R.styleable.TextView_text);
但我收到此错误消息:
包com.android.internal.R不存在
那么如何检索TextView的“默认”属性?
答案 0 :(得分:6)
如果你想要访问那些'android'属性,你可以'覆盖'它们:在你声明的样式声明中,例如。
<attr name="android:padding"/>
然后你可以通过这种方式轻松获得:
int padding = a.getInt(R.styleable.CustomView_android_padding, -1);
仅仅为了记录,anwser的灵感来自Lucas Rocha实施的TwoWayView布局的source code。我认为这是分析如何实现自定义视图的好例子
答案 1 :(得分:1)
internal.R类不可见,所以你只能通过它们的访问器方法读取它们,并且只有在调用了超级构造函数后才能读取它们。
请参阅TextView source,了解其内部运作方式。
答案 2 :(得分:0)
要访问 com.android.internal.R 的资源,您可以使用
Resources.getSystem().getIdentifier(name, defType, defPackage)
link可能会有所帮助: