boolean tmp = false;
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tmp = !tmp;
v.setBackgroundColor(tmp ? Color.RED : Color.BLUE);
}
});
EDIT: rõ ràng là bạn muốn có một ví dụ phức tạp hơn
Đầu tiên tạo một XML drawable trong và đặt tên là pink_button. xml và đặt đoạn mã sau bên
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FF5EF1"/>
<corners android:radius="15dp"/>
<stroke
android:width="1dp"
android:color="#303030"/>
</shape>
Bây giờ làm cho một blue_button.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#008DFF"/>
<corners android:radius="15dp"/>
<stroke
android:width="1dp"
android:color="#303030"/>
</shape>
Bây giờ làm cho một số bố trí hoạt động giới thiệu, tôi đã sử dụng button_demo_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/btnDemo"
android:layout_width="150dp"
android:layout_height="30dp"
android:layout_centerInParent="true"
android:layout_marginTop="100dp"
android:background="@drawable/pink_button"
android:gravity="center"
android:text="PINK"
android:textColor="@android:color/white"
android:textSize="15sp"/>
</RelativeLayout>
Và cuối cùng hoạt động, đặt tên nó là bất cứ điều gì bạn muốn tôi sử dụng ButtonDemoActivity
public class ButtonDemoActivity extends Activity {
private Button btnDemo;
private boolean isPink = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.button_demo_activity);
btnDemo = (Button) findViewById(R.id.btnDemo);
btnDemo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isPink = !isPink;
int resId = isPink ? R.drawable.pink_button : R.drawable.blue_button;
btnDemo.setBackgroundResource(resId);
btnDemo.setText(isPink ? "PINK" : "BLUE");
}
});
}
}
Và đây là giao diện cuối cùng của các nút sẽ ở mỗi trạng thái
Nguồn
2015-04-20 20:53:51
Vâng, loại này công trình, ngoại trừ những thay đổi nút hoàn toàn khi tôi cố gắng này. Về cơ bản, nó không có góc tròn và vân vân. Nhưng tôi đoán bạn có thể thay đổi điều đó từ bên trong phương thức 'onClick'? – hokosha
Tất nhiên. Thay vì chaning một màu, sử dụng setbackgroundDrawable (R.drawable.something) và bạn có thể có một hình dạng tùy chỉnh drawable như trong câu hỏi của bạn. Câu trả lời của tôi có nghĩa là đơn giản hóa mọi thứ :) –
Trước hết, cảm ơn bạn đã đơn giản hóa, được đánh giá cao! Được rồi, tôi nghĩ rằng tôi hiểu, nhưng vì một lý do nào đó không thể làm cho nó hoạt động được. Bạn có thể bằng cách nào đó cho thấy bạn có nghĩa là gì? – hokosha