我的 Activity 由 10 个按钮组成,每个按钮都有独特的背景颜色。当按下按钮时, Activity 的背景应根据按下按钮的颜色而变化。单击的按钮的颜色应更改为白色,其文本颜色应更改为黑色。我已经完成了任务,直到 Activity 的背景颜色发生变化。我不知道如何使用 View v 更改按钮颜色及其文本颜色。因为我不知道将按下哪个按钮,所以我不能直接使用按钮 id。这是代码。
Java 文件:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_red=(Button)findViewById(R.id.red_btn);
btn_pink=(Button)findViewById(R.id.pink_btn);
btn_blue=(Button)findViewById(R.id.blue_btn);
btn_sblue=(Button)findViewById(R.id.sblue_btn);
btn_orange=(Button)findViewById(R.id.orng_btn);
btn_purple=(Button)findViewById(R.id.purple_btn);
btn_green=(Button)findViewById(R.id.grn_btn);
btn_yellow=(Button)findViewById(R.id.yellow_btn);
btn_brown=(Button)findViewById(R.id.brown_btn);
btn_black=(Button)findViewById(R.id.black_btn);
rl=(RelativeLayout)findViewById(R.id.rel_layout);
btn_red.setOnClickListener(this);
btn_pink.setOnClickListener(this);
btn_blue.setOnClickListener(this);
btn_sblue.setOnClickListener(this);
btn_orange.setOnClickListener(this);
btn_purple.setOnClickListener(this);
btn_green.setOnClickListener(this);
btn_yellow.setOnClickListener(this);
btn_brown.setOnClickListener(this);
btn_black.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// Change Background Color
btn_clr=(ColorDrawable)v.getBackground();
rl.setBackground(btn_clr);
// Change Button Color
v.setBackgroundColor(Color.WHITE);
//Change Text Color
//Text Color should change to black
}
}
XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.bsse.asiya.colorchanger.MainActivity"
android:id="@+id/rel_layout">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Red"
android:id="@+id/red_btn"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="48dp"
android:layout_marginStart="48dp"
android:layout_marginTop="40dp"
android:textColor="@color/white"
android:background="@color/red"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pink"
android:id="@+id/pink_btn"
android:layout_alignBottom="@+id/red_btn"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="40dp"
android:layout_marginEnd="40dp"
android:textColor="@color/white"
android:background="@color/pink"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Blue"
android:id="@+id/blue_btn"
android:layout_below="@+id/red_btn"
android:layout_alignRight="@+id/red_btn"
android:layout_alignEnd="@+id/red_btn"
android:layout_marginTop="40dp"
android:textColor="@color/white"
android:background="@color/blue"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sky Blue"
android:id="@+id/sblue_btn"
android:layout_above="@+id/orng_btn"
android:layout_alignLeft="@+id/pink_btn"
android:layout_alignStart="@+id/pink_btn"
android:textColor="@color/white"
android:background="@color/sky_blue"
android:layout_alignRight="@+id/pink_btn"
android:layout_alignEnd="@+id/pink_btn" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Orange"
android:id="@+id/orng_btn"
android:layout_below="@+id/blue_btn"
android:layout_alignLeft="@+id/blue_btn"
android:layout_alignStart="@+id/blue_btn"
android:layout_marginTop="40dp"
android:textColor="@color/white"
android:background="@color/orange"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Purple"
android:id="@+id/purple_btn"
android:layout_alignBottom="@+id/orng_btn"
android:layout_alignRight="@+id/pink_btn"
android:layout_alignEnd="@+id/pink_btn"
android:textColor="@color/white"
android:background="@color/purple"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Green"
android:id="@+id/grn_btn"
android:layout_below="@+id/orng_btn"
android:layout_alignLeft="@+id/orng_btn"
android:layout_alignStart="@+id/orng_btn"
android:layout_marginTop="41dp"
android:textColor="@color/white"
android:background="@color/green"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Yellow"
android:id="@+id/yellow_btn"
android:layout_alignTop="@+id/grn_btn"
android:layout_alignLeft="@+id/purple_btn"
android:layout_alignStart="@+id/purple_btn"
android:textColor="@color/white"
android:background="@color/yellow"
android:outlineProvider="bounds"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Brown"
android:id="@+id/brown_btn"
android:layout_alignParentBottom="true"
android:layout_alignLeft="@+id/grn_btn"
android:layout_alignStart="@+id/grn_btn"
android:layout_marginBottom="41dp"
android:textColor="@color/white"
android:background="@color/brown"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Black"
android:id="@+id/black_btn"
android:layout_alignTop="@+id/brown_btn"
android:layout_alignLeft="@+id/yellow_btn"
android:layout_alignStart="@+id/yellow_btn"
android:textColor="@color/white"
android:background="@color/black"/>
</RelativeLayout>
最佳答案
这个怎么样?
@Override
public void onClick(View v) {
...
if (v instanceof Button) {
((Button) v).setBackgroundColor(Color.WHITE);
((Button) v).setTextColor(Color.BLACK);
}
}
关于java - 在android中更改按钮颜色及其文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39357140/