[解決済み] ?attr/selectableItemBackgroundを背景として使用する場合、波紋の色はどのように変更すればよいですか?
質問
私はいくつかのSOの質問を見ましたが、彼らは私が欲しいものを達成するためにいくつかの可能な方法を与えてくれました。例えば
-
使用方法
colorControlHighlight
属性を使用します。以下は私のstyles-v21.xmlです。
<style name="SelectableItemBackground"> <item name="android:colorControlHighlight">#5677FC</item> <item name="android:background">?attr/selectableItemBackground</item> </style>
そして私のウィジェット。
<TextView android:id="@+id/tv_take_photo_as_bt" android:layout_width="280dp" android:layout_height="48dp" android:text="@string/act_take_photo" style="@style/SelectableItemBackground"/>
で、うまくいきません。また、私は
parent="Theme.AppCompat
を追加したり、スタイルをcolorControlHighlight(no android: prefix)"
に変更するか、または?android:attr/selectableItemBackground
に変更しても、どちらも有用ではありません。 -
使用する
backgroundTint
属性を使用します。そこで、私は
android:backgroundTint="#5677FC"
に、私のTextView
. それでもだめでした。そこで、私はandroid:backgroundTintMode
をsrc_in
でありsrc_atop
といった具合で、決して違いはありません。
では、リップルの色を変えるにはどうしたらよいかというと
?attr/selectableItemBackground
を背景として使用する場合、どのようにすれば波紋の色を変更できるのでしょうか?ロリポップ以降にしか注目していません。よろしくお願いします。
どのように解決するのですか?
最終的に私は解決策を見つける:代わりに使用する
android:colorControlHighlight
を直接使うのではなく、テーマの中で
SelectableItemBackground
というように、別のスタイルを書くべきでしょう。
<style name="SelectableItemTheme">
<item name="colorControlHighlight">@color/ripple_color</item>
</style>
では
<style name="SelectableItemBackground">
<item name="android:theme">@style/SelectableItemTheme</item>
<item name="android:background">?attr/selectableItemBackground</item>
</style>
最後に
style="@style/SelectableItemBackground"
に
View
をlayout.xmlに追加します。
2016/8/26に更新された
Nのリリース後、このメソッドでリップルカラーを設定できない場合があることを発見しました。
View
(など)。
CardView
). 今、私は開発者に強くお勧めするのは
RippleDrawable
を使うことをお勧めします。以下はその例です。
をタッチ/クリックしたときに波紋を表示したい。
CardView
を表示させたいのですが、もちろんロリポップ以前は別のフィードバックがあるはずです。というわけで書いておきます。
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@drawable/selectable_item_background"/>
と
selectable_item_background
で
drawable
フォルダーに格納します。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@android:color/transparent" />
<item android:drawable="@color/color_clicked" />
</selector>
selectable_item_background
で
drawable-v21
フォルダーに格納されます。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ripple_black" />
</selector>
最後に
ripple_black
で
drawable
(または
drawable-v21
) フォルダを使用します。
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:color="@color/color_clicked"
tools:ignore="NewApi" /> <!--you can remove this line if it's in v21 folder-->
これで終わりです。他のビューでは、多分
android:background="@drawable/selectable_item_background"
. を設定することを忘れないでください。
OnClickListener
,
OnTouchListener
などとすると、リップルが表示されなくなります。
関連
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み】カラーリソースからcolor-intを取得する方法は?
-
[解決済み] サポートライブラリを使って波紋アニメーションを実現するには?
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
最新
-
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におけるViewPager2の適切な実装
-
[解決済み] 「KotlinとAndroidで「パラメータTを推測するのに十分な情報がありません。
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] これはどういうことですか?失敗 [INSTALL_FAILED_CONTAINER_ERROR]?
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] ブルートゥースアプリケーションのテストにアンドロイドエミュレータを使用するには?
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理
-
[解決済み] WhatsAppでメッセージを送信する