Tôi cố gắng để áp dụng hiệu ứng gợn trên mặt thả xuống Spinner, như thế này:hiệu lực Ripple vào các mặt hàng thả xuống Spinner màu nền (appcompat-v7 V21)
activity.java
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.array_name, R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
Spinner mSpinner = (Spinner) findViewById(R.id.spinner);
mSpinner.setAdapter(adapter);
simple_spinner_dropdown_item. xml
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/spinner_ripple"
android:ellipsize="marquee"
android:gravity="center_horizontal"
android:padding="10dip"
android:singleLine="true"
android:textSize="14sp" />
spinner_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<ripple android:color="?android:attr/colorControlHighlight">
<item><shape>
<solid android:color="@android:color/white" />
</shape>
</item>
</ripple>
</item>
</selector>
nhưng trong danh sách thả xuống nó hoạt động chỉ dành cho các mục đầu tiên và chỉ khi mục đã chọn hiện tại là một trong những khác so với đầu tiên. Trong tất cả các trường hợp khác, nó điền vào mục nền với màu gợn sóng (không có hiệu ứng gợn sóng). Mã của tôi ở đâu sai?
Đã cố gắng: doesnt làm việc để thiết lập màu sắc cố định trên nền tảng của bố cục mục thả xuống và di chuyển hiệu ứng gợn dưới phần tử Spinner, như thế này:
simple_spinner_dropdown_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:ellipsize="marquee"
android:gravity="center_horizontal"
android:padding="10dip"
android:singleLine="true"
android:textSize="14sp" />
activity_layout .xml
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:dropDownSelector="@drawable/spinner_ripple" />
Bằng cách này hiệu ứng gợn sóng trên nền trắng được di chuyển trên cấp chủ đề: nó hoạt động, nhưng hoạt động cho tất cả các spinners trong ứng dụng của tôi. Vì vậy, tôi không thể có một spinner duy nhất với hiệu ứng gợn trên màu nền riêng của mình khác với chủ đề một. – GPack
Đó là điều không may nhưng do lỗi Android là cách duy nhất, trừ khi bạn muốn phân lớp lớp spinner và cố gắng triển khai một giải pháp thay thế trong đó. – stealth
Btw, tại sao bạn muốn có một spinner khác với những người khác? – stealth