如何使用命名空间获取属性" android"在自定义TextView中

时间:2014-10-21 12:30:59

标签: android textview android-custom-view android-custom-attributes

在自定义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的“默认”属性?

3 个答案:

答案 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可能会有所帮助: