2010-11-08 7 views
29

Có cách nào để chỉ định hình nền/màu nền thay thế cho Nút trong tệp XML sẽ được áp dụng onClick hay tôi phải thực hiện Button.setBackground() trong onClickListener?Làm cho nút Android thay đổi nền khi nhấp qua XML

+0

Để biết thêm chi tiết và trợ giúp triển khai, hãy tham khảo [tài liệu android] (http://developer.android.com/resources/tutorials/views/hello-formstuff.html). –

Trả lời

94

Để thay đổi hình ảnh bằng cách sử dụng mã

public void onClick(View v) { 
    if(v == ButtonName) { 
    ButtonName.setImageResource(R.drawable.ImageName); 
    } 
} 

Hoặc, sử dụng một tập tin XML:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
    android:drawable="@drawable/login_selected" /> <!-- pressed --> 
    <item android:state_focused="true" 
    android:drawable="@drawable/login_mouse_over" /> <!-- focused --> 
    <item android:drawable="@drawable/login" /> <!-- default --> 
</selector> 

Trong OnClick, chỉ cần thêm đoạn mã này:

ButtonName.setBackgroundDrawable(getResources().getDrawable(R.drawable.ImageName)); 
+0

Cảm ơn, chính xác những gì tôi đang tìm kiếm (mục trạng thái ...) – nbarraille

+0

@ David, cảm ơn vì bài đăng này. Tôi có vài nút hình ảnh yêu cầu tính năng này (thay đổi hình ảnh khi nhấn) những thay đổi cần thiết trong Selector & onClick cho tất cả? bạn có thể hướng dẫn tôi không – swiftBoy

+0

nơi chính xác bạn trỏ đến tệp xml đó trong phương pháp thứ hai? – Paul

6

Trong phiên bản mới nhất của SDK, bạn sẽ sử dụng phương thức setBackgroundResource.

public void onClick(View v) { 
    if(v == ButtonName) { 
    ButtonName.setBackgroundResource(R.drawable.ImageResource); 
    } 
} 
1

Hãy thử:

public void onclick(View v){ 
      ImageView activity= (ImageView) findViewById(R.id.imageview1); 
     button1.setImageResource(R.drawable.buttonpressed);} 
1
public void methodOnClick(View view){ 

Button.setBackgroundResource(R.drawable.nameImage); 

} 

tôi khuyên bạn nên sử dụng nút bên LinearLayout cho thích ứng với kích thước của tuyến tính.