2011-07-28 7 views
8

Tôi đang cố gắng chọn một bộ chọn màu cho một lớp mở rộng của LinearLayout, vì vậy, tôi nghĩ nó giống như chúng ta nói về linearLayout.Màu của bộ chọn trên LinearLayout

tôi làm theo hướng dẫn trên this bài đăng, câu trả lời nói về hình dạng.

Bây giờ tôi có 3 xml trên drawables thư mục:

normal.xml tập tin

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 
    <solid android:color="#ffffffff" /> 
</shape> 

tập tin pressed.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 
    <solid android:color="#00000000" /> 
</shape> 

và cuối cùng, tập tin bg.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/pressed" /> 
    <item android:state_focused="true" android:drawable="@drawable/pressed" /> 
    <item android:state_selected="true" android:drawable="@drawable/pressed" /> 
    <item android:drawable="@drawable/normal" /> 
</selector> 

Tôi đang truy cập này theo cách sau:

Drawable d = getResources().getDrawable(context.getResources().getIdentifier("mypackageuri.tProject:drawable/bg", null, null)); 
    view.setBackgroundDrawable(d); 

Các "bình thường" nêu mỹ của nó, với màu sắc thiết lập tại "normal.xml", nhưng không có cách nào với những người khác, tôi nhấn quan điểm của tôi và không có gì xảy ra, nó không phải thay đổi màu sắc trong bất kỳ cách nào ...

tôi không thể nhìn thấy những gì tôi đang làm sai ...

Cảm ơn bạn

+1

có thể muốn dán bố trí xml của bạn – azharb

+6

Whoa mà đã là cách vòng xoay nhất nhận được một nguồn tài nguyên có thể vẽ được. . Thay vì 'getResources() getDrawable (context.getResources() getIdentifier (. "Mypackageuri.tProject: drawable/bg", null, null)); ' thử ' getResources() getDrawable (R.. drawable.bg); '. Trừ khi tôi đang thiếu một cái gì đó. – dmon

+0

@ tốt điểm cá nhân, bệnh cố gắng mà quá! cảm ơn!! – Deitools

Trả lời

22

xem của bạn cần được nhấp để có được nhà nước pressed khi bạn bấm vào nó. Sử dụng:

view.setClickable(true); 

hoặc trong xml bố trí:

android:clickable="true" 
+0

một cái gì đó đơn giản như vậy ... cảm ơn bạn !! Tôi sẽ thử nó vào ngày mai! – Deitools

+0

chào mừng bạn :) –

+1

nó đã hoạt động, công ty;) – Deitools