我創建一個自定義TextSwitcher如下如何從自定義視圖中傳遞樣式屬性?
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);
}
});
}
}
這是一件好事,但我需要明確設置使用setStyle
功能如上聲明,初始化後的風格。
我希望我不需要調用setStyle
只是申報我的風格在XML(如下代碼所示),並獲得int值通過構造attr
價值了,並沿該ViewFacory
發送,全部在init()
函數中完成。
<my.example.CustomTextSwitcher
android:id="@+id/search_list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/recentSearchHeaderText" />
我怎麼能做到這一點?