【发布时间】:2015-10-16 13:53:16
【问题描述】:
我创建了一个自定义布局类(扩展了 RelativeLayout),并将 TextView 作为布局的一部分。
我想将 XML 中声明的属性应用到我的 TextView,无论如何我可以读取 android 属性(不是我的自定义属性,那部分已经处理好了)。
例如,在我的 XML 中,我会有这个:
<my.custom.MyLayout
android:layout_width="100dp"
android:layout_height="20dp"
android:text="SomeText" />
我想读取 text 属性并将其应用于我的 TextView(目前它正在应用于 RelativeLayout),而不是创建我自己的属性并读取它。
我的自定义布局是这样的:
public class MyLayout extends RelativeLayout {
private TextView textView;
public void MyLayout(final Context context, final AttributeSet attrs) {
/**Read android attributes and apply it to TextView **/
??
}
我当前的解决方案是创建自定义属性并读取它们,但我觉得这不是一个好的解决方案,因为我将复制每个声明为 TextView 的属性。
有关我当前解决方案的更多信息。
我有一个名为 myText 的自定义属性,用于将 XML 中声明的文本应用到我的 TextView。
在我的布局 XML 中:
myNameSpace:myText="SomeText"
并在我的 Java 类中阅读它:
String text= a.getString(R.styleable.MyStyleable_myText);
textView.setText(text);
我希望摆脱我的自定义属性并阅读“android:”属性。
【问题讨论】:
-
如果
MyLayout是您的自定义组件,那么您可以编写 getter 来获取任何属性或任何内容 -
我想读取 XML 属性,例如
android:text="SomeText"作为传递给每个视图的构造函数的 attrs 值的一部分。我不能为此使用吸气剂。
标签: android android-layout android-custom-view