材料設計とAppCompatのとAndroidの中の色のボタン

? mail929 @ | Original: StackOverFlow

「 ____ 」アップデートが今日出てきた前に、私はAndroid Lのボタンの色を変更することができなく、古いバージョンにあった。新しいAppCompatの更新を含めた後、私は私がボタンを試して行うときにちょうど消え、いずれかのバージョンの色を変更することができません。誰もが、ボタンの色を変更する方法を知っていますか?

以下の写真は、私が実現したいことを示しています。

材料設計とAppCompatのとAndroidの中の色のボタン

白いボタンが赤の1は私が欲しいものです、デフォルトです。

:これは私が「 ____ 」のボタンの色を変更する前に何をしていたかである

AppCompat

と動的にそれを行うには:

styles.xml

また、私が「 ____ 」 「 ____ 」からテーマの親を変更しました



Top 5 Respuesta

1Justin Powell @

ボタンはまだAppCompatのライブラリでサポートされていません。 http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.htmlから:

Widget tinting

アンドロイド5.0を持つデバイス上で動作しているときは、ウィジェットのすべてがある   colorPrimary属性カラーテーマを[使用して色を付け、   colorPrimaryDark 、 colorAccent 、 colorControlNormalは、等] 。がある   2ロリポップでこれを許可する主な機能:描画可能着色し、   テーマを参照するとドロウアブルで(フォーム? ATTR / fooのの)属性。

AppCompatのはAndroidの以前のバージョンに類似した動作を提供します   UIウィジェットのサブセットのために:

Everything provided by AppCompat’s toolbar (action modes, etc) EditText Spinner CheckBox RadioButton Switch (use the new android.support.v7.widget.SwitchCompat) CheckedTextView

「 ____ 」顕著に不在である。我々は将来のアップデートまで待たなければならないように見えます。



2eluleci @

そのAppCompatのがボタンをサポートしていないので、まだあなたが背景としてXMLを使用することができます。私は、Androidのソースコードを見ていたし、素材のボタンをスタイリングするための関連ファイルを見つけたことをやってください。

1 - Look at the original implementation of material button from source.

でご覧になれますhttps://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/btn_default_material.xml 。

あなたは、あなたのプロジェクト描画可能V21フォルダにファイルをコピーすることができます。しかし、ここで色のATTRには触れないでください。あなたが変更する必要があるファイルは、第二のファイルです。

描画可能V21 / custom_btn.xml

<item name="android:colorButtonNormal">insert color here</item>
2 - Get the shape of the original material button

あなたが実現したようあなたが見つけることができます。この描画可能内部で使用される形状がありますhttps://github.com/android/platform_frameworks_base/blob/master/core/res/res/drawable/btn_default_mtrl_shape.xml 。

button.getBackground().setColorFilter(getResources().getColor(insert color here), PorterDuff.Mode.MULTIPLY);

3 - Getting dimensions of the material button

そして、このファイルで、ファイルから使用されるいくつかの次元があるhttps://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/dimens_material.xml 。あなたは、ファイル全体をコピーして値をフォルダに置くことができます。これは、すべてのボタンに(つまり、材料のボタンで使用されている)と同じサイズを適用するために重要である

4 - Create another drawable file for old versions

古いバージョンでは、同じ名前を持つ別のドロウアブルを持っている必要があります。私が直接参照するのインライン代わりにアイテムを入れています。あなたがそれらを参照することができます。しかし、再び、最も重要なことは、材料のボタンの元の寸法である。

描画可能/ custom_btn.xml

@android:style/Theme.Material.Light.DarkActionBar
Result

あなたのボタンはロリポップデバイス上の波及効果を持つことになります。古いバージョンでは、波及効果を除いて全く同じボタンを持つことになります。しかし、あなたはさまざまな状態のためのドロウアブルを提供することをするので、彼らはまた、 (古い方法のように)タッチイベントに反応します。

3kiruwka @

あなたが唯一の "フラット"素材ボタンが必要な場合は、 http://stackoverflow.com/a/説明したようにhttp://developer.android.com/reference/android/R.attr.html#selectableItemBackground属性を使用して彼らの背景をカスタマイズすることができます2358786分の27932664 。