我正在尝试学习Android Studio。现在我正在编写一个简单的应用程序,按下按钮后会播放声音(像木琴一样)。 你能帮我解决以下问题吗?我想改变按下的按钮的颜色UNTIL下一个按下(例如,首先所有按钮都是红色,按下一个按钮将颜色改为绿色,它是绿色,直到按下下一个按钮。 我已经在drawable中创建了xml文件,它们负责更改按钮的颜色,按下它时,但它并不是我想要的。我需要一个解决方案,将按钮保持绿色直到按下下一个按钮。
这是我的main_activity文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.adecostres.doremi.MainActivity">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button_do"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:elevation="0dp"
android:background="@drawable/my_button"
android:textColor="@android:color/white"
android:onClick="PlaySound_1"
android:text="DO" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button_re"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/my_button"
android:textColor="@android:color/white"
android:elevation="0dp"
android:onClick="PlaySound_1"
android:text="RE" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button_mi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/my_button"
android:textColor="@android:color/white"
android:elevation="0dp"
android:onClick="PlaySound_1"
android:text="MI" />
</TableRow>
</TableLayout>
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:2)
首先创建点击侦听器功能,处理所有按钮点击,然后在里面编写此代码,迭代布局中的每个视图,并检查你的按钮
for (int i = 0; i < your_layout.getChildCount(); i++) {
View view = your_layout.getChildAt(i);
if (view instanceof Button){
if (view.getId() == R.id.your_clicked_button_id){
view.setBackgroundColor(Color.GREEN);
}else {
view.setBackgroundColor(Color.RED);
}
}
这会将您的所有按钮颜色更改为红色,但您点击的按钮将为绿色
答案 1 :(得分:0)
试试这个,
维护一个全局按钮对象,说“globalButton”。
如果有任何按钮按下(例如“pressedButton”),请按照以下步骤操作
答案 2 :(得分:0)
感谢您的所有反馈。现在,我想出了这个解决方案(MainActivity.java中的方法,负责按下按钮后播放声音:
public void PlaySound_1 (View v)
{
int sound = 0;
dzwiek_do.setBackgroundColor(Color.RED);
dzwiek_re.setBackgroundColor(Color.RED);
dzwiek_mi.setBackgroundColor(Color.RED);
if (dzwiek_do.getId() == v.getId())
{
sound = sound_do;
dzwiek_do.setBackgroundColor(Color.GREEN);
}
else if (dzwiek_re.getId() == v.getId())
{
sound = sound_re;
dzwiek_re.setBackgroundColor(Color.GREEN);
}
else if (dzwiek_mi.getId() == v.getId())
{
sound = sound_mi;
dzwiek_mi.setBackgroundColor(Color.GREEN);
}
playSound(this, sound);
}