androidカスタムプロパティ三部作
開発では、各プラットフォームメーカーがインタフェーススタイルをカスタマイズすることで、UIスタイルが千変万化するため、アプリケーションを異なるモバイルデバイスプラットフォームの下で統一的なUIスタイルを表示する必要があることがよくあります.カスタムプロパティを使用する必要があります.
Step 1:リソースファイル、values.attrs.xmlでの属性の定義
Step2:code in class file
a.recycle()の役割についてお話ししますrecycle()はtypedArrayをキャッシュして再利用するため、使用するたびにメモリを再割り当てする必要はありません.Step 3:適用
ここで太くする2つの場所は、属性をカスタマイズするために必要なもので、xmlns:appでネーミングスペースを定義し、以下でapp:Text、つまりカスタム属性を使用することができます.
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、つまりカスタム属性を使用することができます.