sumber
sumber
Android M
Baru di Android 6.0, Spinner sekarang memiliki android:popupTheme
parameter yang memungkinkan Anda untuk mengatur tema yang digunakan untuk popup (dropdown).
Anda dapat menggunakannya sebagai:
<Spinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:popupTheme="@android:style/ThemeOverlay.Material.Light" />
Itu akan berfungsi pada perangkat yang menjalankan API level 23+, tetapi tidak pada perangkat yang menjalankan versi Android yang lebih rendah.
AppCompat
Di sinilah AppCompat berperan. Implementasi Spinner-nya juga mendukung popupTheme
, tetapi sedikit lebih terlibat untuk melakukannya dengan benar.
<Spinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
Setelah itu, Anda perlu memperbarui Adaptor Anda agar dapat bekerja dengan AppCompat. Anda melakukannya dengan membuatnya mengimplementasikan ThemedSpinnerAdapter
antarmuka baru .
public class MyAdapter extends BaseAdapter implements ThemedSpinnerAdapter {
Theme getDropDownViewTheme() { ... }
void setDropDownViewTheme(Theme theme) { ... }
}
Metode ini digunakan oleh Spinner agar dapat memberi tahu Adaptor tema mana yang akan digunakan untuk meluaskan tampilan drop-down. Untuk membuatnya semudah mungkin, kami telah memberi Anda Helper
kelas yang dapat Anda colokkan ke adaptor Anda.
Ini berarti adaptor Anda menjadi seperti:
public class MyAdapter extends BaseAdapter implements ThemedSpinnerAdapter {
private final ThemedSpinnerAdapter.Helper mDropDownHelper;
public MyAdapter(Context context) {
mDropDownHelper = new ThemedSpinnerAdapter.Helper(context);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
// Inflate the drop down using the helper's LayoutInflater
LayoutInflater inflater = mDropDownHelper.getDropDownViewInflater();
view = inflater.inflate(R.layout.my_dropdown, parent, false);
}
// ...
return view;
}
@Override
public void setDropDownViewTheme(Theme theme) {
mDropDownHelper.setDropDownViewTheme(theme);
}
@Override
public Theme getDropDownViewTheme() {
return mDropDownHelper.getDropDownViewTheme();
}
}
untuk panah pemintal, saya telah menggunakan
android:backgroundTint="@color/white"
ini akan bekerja dari API 21untuk tampilan pemintal dan tampilan tarik-turun:
untuk getView () adaptor akan menggunakan spinner_item.xml
untuk getDropDownView () adaptor akan menggunakan dropdwon_item.xml
lalu Anda dapat menggunakan tata letak khusus sesuka Anda
semoga membantu
sumber
Hanya untuk referensi jika Anda menggunakan
CursorAdapter
implementasi Anda bisa jauh lebih mudah, cukup timpanewView()
, tidak perlu menimpa digetDropDownView()
sana:sumber
Anda dapat mencoba ini: di folder tata letak Anda, buat spinner_item.xml:
lalu gunakan kode ini:
sumber