我正在制作一个绘图应用程序,用户可以在其中选择自定义颜色。选择颜色后,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行放在最后一个代码。然而我已经尝试将它向上移动,但仍然是方形颜色。如何修改?
谢谢!