ユーザーがカスタムカラーを選択できる描画アプリを作成しています。色を選択した後、customBtn は次のコードによってその色を選択した色に変更します。
customBtn.setBackgroundColor(Color.argb(alphaSeekBar.getProgress(), redSeekBar.getProgress(),
greenSeekBar.getProgress(), blueSeekBar.getProgress()));
ただし、これにより、ボタンが四角になります。
角を丸くしたいのですが、押すとグレーになります。
すでに存在selector.xml
し、次のように示されていますが、どうすればすべてのものを一緒に組み込むことができますか
- 押されていないときはカスタムカラーが表示され、角が丸くなり、
- 押すと灰色になります(そして角丸を維持します)?
セレクタ:
<item android:state_pressed="true" >
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="@color/grey"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="@color/???-- how to amend---??"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
編集: プログラムで角丸を設定するには、カスタマイズされた色は静的ではないため、ユーザーは要求に応じてカスタマイズされた色を変更できます
customColorCode = Color.argb(alphaSeekBar.getProgress(), redSeekBar.getProgress(),
greenSeekBar.getProgress(), blueSeekBar.getProgress());
RoundRectShape rs = new RoundRectShape(new float[] { 10, 10, 10, 10, 10, 10, 10, 10}, null, null);
ShapeDrawable sd = new ShapeDrawable(rs);
customBtn.setBackgroundDrawable(sd);
customBtn.setBackgroundColor(customColorCode);
プログラム上の問題:
カスタマイズされた色を選択する前のボタンは完全に丸い角を示しています。カスタマイズされた色を選択した後に設定すると、正方形の色に戻ります。おそらく、setBackgroundColor 行が最後のコードに配置されているためです。それでも私はそれを上に移動しようとしましたが、まだ四角い色です。これはどのように変更できますか?
ありがとう!