2017-01-18 3 views
0

私のプロジェクトでは、デザインが異なるボタンをいくつか使用する必要があります。だから私はカスタムボタンを作るためにdrawableの形を使っています。android drawable shapeを使用する効率的かつ構造化された方法は何ですか?

私は丸い角と緑色の背景を持つボタンが必要だとしましょう。だから、私は "gree_round_button.xml"という形を作りました。これはうまく動作します。しかし、もう一度、同じスタイルの別のボタンが必要です。バックグラウンドカラーが違うからです。これは、 "colorName_round_button.xml"のような別のxmlファイルを作成する必要がありますか?

私はそれを理解しやすいように保っていますが、異なるボタンには多くの共通のスタイルがありますが、1つまたは2つのプロパティが異なる場合があります。同じデザインの複数のファイルを作成するのをスキップできる方法はありますか?任意の形を拡張するために使用できる方法はありますか?背景色をパラメータとして渡すことができますか? この "button.xml"のように、この図形は1つのパラメータcolorを受け付けます。このシェイプは、使用するすべてのボタンで使用でき、パラメータとして別の色を渡すだけです。ウェブCSSの

:私はこのような何かをする簡単な方法があります。この

.button {border: 1px solid #ddd;border-radius:5px;padding:20px;} 
.button.green {background:green;} 

ような何かを行うことができます。おかげさまで

+0

あなたは 'View'を拡張し、あなたが好きな色パラメータを渡すことができます。 –

+0

私は間違いなくそれをチェックします。ありがとうございます –

答えて

2

backgroundTintこれで、同じドロアブルを使用できますが、異なる色でオーバーレイすることができます。

たとえば、bg_circle.xmlは白い円です。次に、色合いを変えて色を変更し、別のアイコンをsrcとして使用します。

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_check_mark" 
    android:background="@drawable/bg_circle" 
    android:backgroundTint="@color/red" 
    /> 

あなただけがすべてのボタンに背景として使用し、必要に応じて異なる色でそれを着色することができます1 round_button.xmlを持っている必要がありますこの方法です。各アイコンの内容は、独自の描画可能なものにすることができます。以下のみ3ドロウアブルで作られた

4つのボタン:

enter image description here

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_feather" 
    android:background="@android:drawable/btn_default" 
    /> 

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_feather" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorPrimaryDark" 
    /> 

<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_plane" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorPrimaryDark" 
    /> 
<ImageButton 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:src="@drawable/ic_plane" 
    android:background="@android:drawable/btn_default" 
    android:backgroundTint="@color/colorAccent" 
    /> 
+0

素晴らしい説明をありがとうございました。ちょうど正しい答えをマーク:) –

関連する問題