フレームワーククラスの1つを拡張するカスタムビューがあります。AndroidのほとんどView
のsには、いくつかのデフォルト属性が定義されています(Button
クリック可能であるなど、によって設定されandroid:clickable="true"
ます)。
カスタムビューにアプリケーション全体のデフォルトを提供するにはどうすればよいですか?
フレームワーククラスの1つを拡張するカスタムビューがあります。AndroidのほとんどView
のsには、いくつかのデフォルト属性が定義されています(Button
クリック可能であるなど、によって設定されandroid:clickable="true"
ます)。
カスタムビューにアプリケーション全体のデフォルトを提供するにはどうすればよいですか?
私はこうして自分の問題を解決しました:
res / values / attrs.xml:
<resources>
<attr name="customViewStyle" type="reference" />
</resources>
res / values / styles.xml:
<resources>
<style name="AppTheme" parent="@android:style/Theme.Light">
<item name="android:background">@drawable/bg_light</item>
<item name="customViewStyle">@style/CustomView</item>
</style>
<style name="CustomView">
<item name="android:clickable">true</item>
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
</style>
</resources>
次に、マニフェストのテーマをAppThemeに設定するだけです。これは、AppThemeの定義のandroid:[widget]Style
代わりにを使用する標準ウィジェットでも機能します。customViewStyle
さらに、このレイアウトのスタイルを作成し、ビューを使用するスタイルを設定することもできます。
ソース:http ://developer.android.com/guide/topics/resources/style-resource.html
AttributeSet引数を取るViewコンストラクターをオーバーライドし、スーパークラスコンストラクターに渡すために独自の変更されたAttributeSetを作成する必要があると思います。
編集:さらに簡単に、Viewサブクラスコンストラクターを呼び出すsetClickable
などして、デフォルトを必要なものに変更します。