最近我读到了自定义属性。我想为TextView添加自定义属性。
到目前为止,我有:
attr文件:
<resources>
<attr name="binding" format="string" />
<declare-styleable name="TextView">
<attr name="binding" />
</declare-styleable>
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res/de.innosoft.android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
custom:binding="test"/>
给定TextView
TextView tv = ...
我如何获得该属性的值(这是“测试”)?我读到了关于obtainStyledAttributes但不知道如何在这里使用它。
答案 0 :(得分:5)
确切地说,你可以扩展你的文本视图
public class CustomTV extends TextView {
public final String YOURATTRS;
public CustomTV(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CustomTV);
YOURATTRS = ta.getString(R.styleable.CustomTV_binding);
ta.recycle();
// use your attrs or not
}
和attrs.xml:
<declare-styleable name="CustomTV">
<attr name="binding" format="string"/>
</declare-styleable>
答案 1 :(得分:3)
据我所知,你有两个选择:
TextView
,并具有AttributeSet
的构造函数。然后,您可以在此构造函数中获取自定义属性。查看本教程:Creating a View Class。最好检查一下这个问题:How to read custom attributes in Android它几乎一样。