回答:
Android M
Android 6.0の新機能であるSpinner android:popupTheme
に、ポップアップ(ドロップダウン)に使用されるテーマを設定できるパラメーターが追加されました。
次のように使用できます。
<Spinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:popupTheme="@android:style/ThemeOverlay.Material.Light" />
APIレベル23以上を実行しているデバイスでは機能しますが、Androidの下位バージョンを実行しているデバイスでは機能しません。
AppCompat
これがAppCompatの出番です。そのSpinner実装もをサポートしていますがpopupTheme
、正しくするのは少し複雑です。
<Spinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
その後、AppCompatを使用できるようにアダプターを更新する必要があります。それを行うには、新しいThemedSpinnerAdapter
インターフェースを実装します。
public class MyAdapter extends BaseAdapter implements ThemedSpinnerAdapter {
Theme getDropDownViewTheme() { ... }
void setDropDownViewTheme(Theme theme) { ... }
}
これらのメソッドは、ドロップダウンビューを拡張するために使用するテーマをアダプターに指示できるようにするために、Spinnerによって使用されます。これをできるだけ簡単Helper
にするために、アダプタにプラグインできるクラスを用意しました。
つまり、アダプタは次のようになります。
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();
}
}
以下のためのスピナーの矢印私が使用したandroid:backgroundTint="@color/white"
API 21からこの意志の仕事を
スピナービューとドロップダウンビューの場合:
ArrayAdapter<Area> areasAdapter = new ArrayAdapter<Area>(getContext(),R.layout.spinner_item, areas);
areasAdapter.setDropDownViewResource(R.layout.dropdwon_item);
areasSpinner.setAdapter(areasAdapter);
以下のためのgetViewメソッド()アダプタがspinner_item.xmlを使用します。
以下のためgetDropDownView()アダプタがdropdwon_item.xmlを使用します。
その後、カスタムレイアウトを好きなように使用できます
それが役に立てば幸い
あなたはこれを試すことができます:あなたのレイアウトフォルダーでspinner_item.xmlを作成してください:
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:padding="10dp"
android:background = "#ffffff"
android:textColor="@color/primary_text"
android:textSize="@dimen/text_size_normal" />
次に、このコードを使用します:
spinnerAdapter = new ArrayAdapter<String>(R.layout.spinner_item,items);