2012-01-04 22 views
31

Tôi muốn đặt nền android.R.attr.selectableItemBackground thành LinearLayout. Khi sử dụng XML không có vấn đề (nó hoạt động)Làm cách nào để đặt hiệu ứng Ripple trên LinearLayout theo lập trình?

<LinearLayout 
    android:id="@+id/llMiner" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="?android:attr/selectableItemBackground" 
    android:clickable="true" > 

... nhưng tôi phải làm điều này trong mã java, vì vậy tôi đã cố gắng này

llMiner.setClickable(true); 
llMiner.setBackgroundResource(android.R.attr.selectableItemBackground); 

... và nó doesn 't làm việc, infact tôi nhận được một NotFoundException trên dòng thứ hai này. Vì vậy, sau khi tôi đã thử biến thể này nghĩ rằng tài nguyên là một màu.

llMiner.setClickable(true); 
llMiner.setBackgroundColor(android.R.attr.selectableItemBackground); 

Điều này không khởi chạy ngoại lệ, nhưng ... không hoạt động (không có thay đổi nền khi nhấn, nhưng thay đổi trạng thái được nhấn khi cần làm) ... bất kỳ đề xuất nào ?

+0

bạn có đang thay đổi màu trong phương thức onClick hoạt động của mình không .. ??? –

+0

Không, tôi không .... – Splact

+0

Sau đó, tôi nghĩ bạn phải ghi đè lên phương thức onClick để hoàn thành chức năng của bạn. –

Trả lời

84

Bạn có thể sử dụng cách này.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    // If we're running on Honeycomb or newer, then we can use the Theme's 
    // selectableItemBackground to ensure that the View has a pressed state 
    TypedValue outValue = new TypedValue(); 
    getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true); 
    textView.setBackgroundResource(outValue.resourceId); 
} 
+1

Điều này thực sự hiệu quả và là câu trả lời đúng. –

+0

Không hoạt động với tôi, màu trắng, chúng không đến để giữ màu sắcĐược tạo từ chủ đề trên thiết bị kẹo trước – Anthone

+1

Nếu bạn muốn giữ màu chủ đề của mình, hãy sử dụng R.attr.selectableItemBackground thay vì android.R.attr.selectableItemBackground –

Các vấn đề liên quan