は私が明示的に初期化した後、上記の宣言としてsetStyle
機能を使用してスタイルを設定する必要があり除きこれは、良いですカスタムビューからスタイルattrを渡すには?
public class CustomTextSwitcher extends TextSwitcher {
private static final long SHOW_TEXT_ANIMATION_TIME = 100;
public CustomTextSwitcher(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
Animation in = AnimationUtils.loadAnimation(context, android.R.anim.fade_in);
Animation out = AnimationUtils.loadAnimation(context, android.R.anim.fade_out);
in.setDuration(SHOW_TEXT_ANIMATION_TIME);
out.setDuration(SHOW_TEXT_ANIMATION_TIME);
this.setInAnimation(in);
this.setOutAnimation(out);
}
public void setStyle(final int style) {
this.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
return new TextView(new ContextThemeWrapper(context, style),
null, 0);
}
});
}
}
以下のようにカスタムTextSwitcherを作成しています。
私は、コンストラクタに入ったsetStyle
を呼び出すが、ちょうどXMLで自分のスタイルを宣言(次のコードのように)とattr
値を通じてint型の値を取得する必要があり、かつViewFacory
に沿って、それを送信しないことを願っています、すべてがinit()
の機能で行われます。
<my.example.CustomTextSwitcher
android:id="@+id/search_list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/recentSearchHeaderText" />
どうすれば実現できますか?