3

重複の可能性:
Androidでカスタム属性を読み取る方法

最近、カスタム属性について読みました。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 = ...

次に、その属性の値(「テスト」ではない)を取得するにはどうすればよいですか?getStyledAttributesについて読みましたが、ここでの使用方法が正確にはわかりません。

4

2 に答える 2

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>
于 2013-01-16T14:46:32.427 に答える
3

私が知っているように、2つのオプションがあります:

  • 拡張TextViewし、をとるコンストラクターを持つ独自のビューを作成しますAttributeSet。次に、このコンストラクターでカスタムプロパティを取得できます。このチュートリアルを確認してください:ビュークラスの作成
  • カスタム属性を処理する独自のLayoutInfalter.Factoryを実装します。

この質問をよく確認してください。Androidでカスタム属性を読み取る方法はほとんど同じです。

于 2013-01-16T14:34:02.053 に答える