所以我遇到了以下问题: 我正在开发一个传感器应用程序,我想检查传感器是否可用。如果不是,我想将按钮的颜色(开始显示传感器值的活动)更改为灰色。 可悲的是,我不能只改变按钮的背景颜色,因为我正在使用Markushi的圆形按钮库。 此按钮如下所示:
<at.markushi.ui.CircleButton
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/gyroscope"
app:cb_color="@color/colorMain"
app:cb_pressedRingWidth="8dip"
android:id="@+id/gyroscope"
android:layout_alignLeft="@+id/temperature"
android:layout_alignStart="@+id/temperature"
android:layout_below="@+id/title"/>
如您所见,此属性定义颜色。
app:cb_color="@color/colorMain"
我的问题是:如何在此方法中以编程方式更改此颜色?
public void testSensors() {
if (testManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE) == null) {
}
}
编辑: setColor不起作用。还剩下这个边界。 (see image) 另外:我正在使用#616161作为新颜色。
EDIT2: 发现,当按下按钮时,边框是由透明圆形物体引起的,它会变大。所以基本上删除这个圆圈的东西会很好。我试着自己找答案:)
答案 0 :(得分:1)
CircleButton button;
button = (Button)findViewById(R.id.buttonId);
public void testSensors() {
if (testManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE) == null) {
button.setColor(Color.parse("#000000"));
}
}
如果您使用普通button
,那么
button.setBackgroundColor(ContextCompat.getColor(context,R.color.colorAccent));
您可以使用
1)Color.parse("#000000")
2)ContextCompat.getColor(context,R.color.yourColor)
答案 1 :(得分:0)
您可以使用circleButton的setColor()
方法,如source code here所示。
所以基本上你需要做的是使用活动的findViewById
方法获得对圆形按钮的引用。那么
public void testSensors() {
if (testManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE) == null) {
myCircleButton.setColor(Color.parse("#000000"));
}
}
此外,如果您看到按下的铃声,那么这意味着按钮的状态在某种程度上处于按下状态,因此请尝试使用setPressed(false)
方法将其设置为false。
答案 2 :(得分:0)
要回答这个问题(如果有人有相同的话): 您可以将动画设置为100.这会以某种方式禁用圆圈。 由于某种原因,按钮的颜色现在有一个固定的颜色(深灰色)但scince这对我很好,我不想在我的桌子下哭,我只是让它继续我的项目。
mCircleButton.setAnimationProgress(100);
非常感谢你们的帮助! :)