[解決済み] AppCompatライブラリからSwitchCompatの色を変更する方法 [重複]について
質問
私のアプリケーションには、異なる色を持ついくつかのスイッチコントロールがあり、それらの色を変更するために、複数のカスタム描画可能なセレクタを使用しました。
新しい android.support.v7.widget.SwitchCompat コントロールは、AppCompat v21 ライブラリのリリースで導入されました。
SwitchCompatの色を、カスタマーのdrawableセレクタを使わずに、XMLやコードでプログラム的に変更することは可能でしょうか?
解決方法は?
AppCompatの色合い属性について。
まず、appCompat libの記事を見てください。 そこ と、設定できる属性が異なります。
カラープライマリ : アプリの主要なブランディングカラーです。デフォルトでは、アクションバーの背景に適用される色です。
カラープライマリダーク : ブランド主要色のダークバージョン。デフォルトでは、ステータスバー(statusBarColorを使用)とナビゲーションバー(navigationBarColorを使用)に適用される色です。
カラーアクセント : ブランディングの主要色を明るく補う。デフォルトでは、フレームワークコントロールに適用される色です(colorControlActivatedを使用)。
カラーコントロールノーマル : 通常状態のフレームワークコントロールに適用される色です。
カラーコントロールアクティブ : フレームワークコントロールがアクティブ(チェック、スイッチオンなど)状態のときに適用される色です。
カラーコントロールハイライト : フレームワーク制御のハイライトに適用される色(例:リップル、リストセレクタ)。
カラーボタンノーマル : フレームワークボタンの通常時の色です。
カラースイッチサム・ノーマル : フレームワークスイッチのサムネイルが通常状態の時に適用される色です。(スイッチオフ)
1つのアクティビティですべてのカスタムスイッチが同じである場合。
これまでの属性で、各アクティビティに独自のテーマを定義することができます。
<style name="Theme.MyActivityTheme" parent="Theme.AppCompat.Light">
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">@color/my_awesome_color</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/my_awesome_darker_color</item>
<!-- colorAccent is used as the default value for colorControlActivated,
which is used to tint widgets -->
<item name="colorAccent">@color/accent</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight, and colorSwitchThumbNormal. -->
</style>
とします。
<manifest>
...
<activity
android:name=".MainActivity"
android:theme="@style/Theme.MyActivityTheme">
</activity>
...
</manifest>
1つのアクティビティで、異なるカスタムスイッチを使用したい場合。
appcompat のウィジェットの色合いは、レイアウトインフレをインターセプトして、色合いを考慮した特別なウィジェットを挿入することで動作します (Chris Banes 参照) 。 についての記事 ) レイアウト xml ファイルの各スイッチにカスタム スタイルを適用することはできません。スイッチを正しい色に着色するカスタムコンテキストを設定する必要があります。
--
を行うには 5.0以前 の場合、グローバルテーマとカスタムアトリビュートをオーバーレイするContextを作成し、プログラム的にスイッチを作成する必要があります。
ContextThemeWrapper ctw = ContextThemeWrapper(getActivity(), R.style.Color1SwitchStyle);
SwitchCompat sc = new SwitchCompat(ctw)
AppCompat時点
v22.1
を使用することができます。
XML
を使うと、スイッチウィジェットにテーマが適用されます。
<RelativeLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
...>
<android.support.v7.widget.SwitchCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:theme="@style/Color1SwitchStyle"/>
あなたのカスタムスイッチテーマ。
<style name="Color1SwitchStyle">
<item name="colorControlActivated">@color/my_awesome_color</item>
</style>
--
について
Android 5.0
新しいビューアトリビュートが登場したようです。
android:theme
(マニフェストのアクティビティ宣言に使用するものと同じ)。別のChris Banesに基づいています。
ポスト
後者では、レイアウトxmlからビューに直接カスタムテーマを定義することができるはずです。
<android.support.v7.widget.SwitchCompat
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Color1SwitchStyle"/>
SwitchCompatのトラックカラーを変更する場合
vine'thさんのおかげで、Switch Off時のTrackのForegroundを指定する方法を説明したSO answerへのリンクで、私の回答が完成しました、それは その場 .
関連
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
view.getRootView()の本当の意味とテストについて
-
Android Studio常见错误之:Rendering Problems/The following classes could not be instantiated
-
[解決済み] アイテムの親を取得する際にエラーが発生しました。AppCompat v23にアップグレードした後、指定された名前に一致するリソースが見つかりません。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み】appcompat v7でEditTextの最下行の色を変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
android.os の NetworkOnMainThreadException。
-
AndroidStudio reports Could not resolve all artifacts for configuration ':app:classpath'.
-
cygwinのダウンロード、インストールチュートリアル、およびCDTの「makeプログラムがパスに見つからない」バグの解消
-
android E/RecyclerView﹕ アダプタが接続されていないため、レイアウトをスキップする。
-
最新のandroidプロジェクトディレクトリにあるarmeabi-v7aとarmeabiの具体的な意味とその違いを教えてください。
-
ActivityはOnFragmentInteractionListenerを実装しなければならないに関する質問
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
android studioが "The activity must be exported or contain an intent-filter" と表示され実行される。
-
[解決済み】スイッチのオンカラーを変更する方法