androidカスタムプロパティ三部作


開発では、各プラットフォームメーカーがインタフェーススタイルをカスタマイズすることで、UIスタイルが千変万化するため、アプリケーションを異なるモバイルデバイスプラットフォームの下で統一的なUIスタイルを表示する必要があることがよくあります.カスタムプロパティを使用する必要があります.
Step 1:リソースファイル、values.attrs.xmlでの属性の定義
<resources>
    <declare-styleable name="userDefinedView">
        <attr name="Text" format="string"/>
    </declare-styleable>
</resources>

Step2:code in class file
    private void getTypedArray(Context context, AttributeSet attrs) {
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.userDefinedView);
        Text = a.getString(R.styleable.userDefinedView_Text);
        a.recycle();
    }
    ...
    private void setTextView(String text) {
        TextView.setText(text);
    }

a.recycle()の役割についてお話ししますrecycle()はtypedArrayをキャッシュして再利用するため、使用するたびにメモリを再割り当てする必要はありません.Step 3:適用
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" **xmlns:app="http://schemas.android.com/apk/res-auto"** xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">

    <com.example.userdefinedClass  android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/definedView" **app:Text="sth...."**/>
</RelativeLayout>

ここで太くする2つの場所は、属性をカスタマイズするために必要なもので、xmlns:appでネーミングスペースを定義し、以下でapp:Text、つまりカスタム属性を使用することができます.