Android Studio中AlertDialog内Spinner下拉列表文字不可见问题求助
问题:AlertDialog中Spinner下拉列表文字看不清,颜色适配问题
我在Android Studio中创建了一个包含TextView、Button和Spinner的AlertDialog,现在遇到的问题是Spinner的下拉列表颜色导致选项无法看清,不知道该修改哪个参数。已经尝试修改AlertDialog背景色和Spinner布局样式,但问题仍未解决。
布局文件(clinic_info_ubicacion_dialog.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rootView" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> <RelativeLayout android:id="@+id/rlDatos" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/text_size_24pt"> <TextView android:id="@+id/tvInfoUbicacion" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/white" android:focusable="true" android:layout_margin="@dimen/spacing_normal" android:inputType="text" android:focusableInTouchMode="true" android:textColorHint="@color/white"/> <TextView android:id="@+id/tvSeleccioneUbicacion" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/white" android:layout_below="@+id/tvInfoUbicacion" android:focusable="true" android:layout_margin="@dimen/spacing_normal" android:inputType="text" android:focusableInTouchMode="true" /> <LinearLayout android:id="@+id/layoutUbicaciones" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/spacing_normal" android:layout_below="@+id/tvSeleccioneUbicacion" android:layout_marginEnd="@dimen/spacing_normal" android:background="@android:color/white" android:gravity="center" android:orientation="vertical"> <Spinner android:id="@+id/spinnerUbicaciones2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:backgroundTint="@color/v2col_lama_dark" android:padding="0dp" tools:backgroundTint="@color/white" tools:listitem="@layout/spinner_item" /> </LinearLayout> <Button android:id="@+id/btnAceptar" style="@style/MyButtonBorderless" android:layout_margin="@dimen/spacing_normal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/gray_light" android:layout_below="@+id/layoutUbicaciones" android:layout_alignParentEnd="true" android:text="@string/text_acept" android:textColor="@color/color_text_1" /> </RelativeLayout> </LinearLayout>
Java代码(ClinicInfoUbicacionDialog.java)
public class ClinicInfoUbicacionDialog extends AlertDialog { @Nullable protected TextView tvInfoUbicacion; @Nullable protected TextView tvSeleccioneUbicacion; protected Spinner spinnerUbicaciones; protected final List<Building> SubUbicaciones = new ArrayList<>(); @Nullable protected Button btnAceptar; @Nullable protected WeakReference<IEmptyBaseActivity> activityWeakReference; public List<String> ubicaciones= new ArrayList<>(); public List<Building> ubicaciones2= new ArrayList<>(); protected SpinnerBuildingsAdapter spUbicacionesAdapter; @NonNull protected String nombreUbicacion; @NonNull public Context context; public IEmptyBaseActivity activity; public ClinicInfoUbicacionDialog(Context context, IEmptyBaseActivity activity) { super(context); this.context=context; this.activity=activity; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.clinic_info_ubicacion_dialog); ClinicInventarioInteractor interactor = new ClinicInventarioInteractor(); tvInfoUbicacion=findViewById(R.id.tvInfoUbicacion); tvSeleccioneUbicacion=findViewById(R.id.tvSeleccioneUbicacion); tvSeleccioneUbicacion.setText("Seleccione la sala: "); spinnerUbicaciones=findViewById(R.id.spinnerUbicaciones2); spinnerUbicaciones.setOnItemSelectedListener(onItemUbicacionSelected); spUbicacionesAdapter= new SpinnerBuildingsAdapter(context,R.layout.custom_spinner_dropdown_item,ubicaciones2, null); spinnerUbicaciones.setAdapter(spUbicacionesAdapter); interactor.wsObtenerListaUbicacionesUsuario(context,activity, new OnResponseTaskSingle() { @Override public void OnResponse(@NonNull Notif notif) { List<ClinicInventarioInteractor.wsUbicacion> list = (List<ClinicInventarioInteractor.wsUbicacion>) notif.getObject(); SharedPreferencesUtils sharedPreferencesUtils = SharedPreferencesUtils.createSharedPreferencesUtils(context); String ubicacionActual = sharedPreferencesUtils.getString(R.string.sp_saved_ubication_clinic, "No encontrado"); tvInfoUbicacion.setText("Usted se encuentra en la sala: " + ubicacionActual); for(var item: list){ ubicaciones.add(0,item.Texto); } spinnerUbicaciones.setAdapter(new ArrayAdapter<String>(context, R.layout.custom_spinner_dropdown_item, ubicaciones)); } }); btnAceptar = findViewById(R.id.btnAceptar); btnAceptar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SharedPreferencesUtils sharedPreferencesUtils = SharedPreferencesUtils.createSharedPreferencesUtils(context); sharedPreferencesUtils.putString(R.string.sp_saved_name_ubication, nombreUbicacion); ClinicInfoUbicacionDialog.this.hide(); } }); } private final AdapterView.OnItemSelectedListener onItemUbicacionSelected = new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) { nombreUbicacion= ubicaciones.get(position); SharedPreferencesUtils sharedPreferencesUtils = SharedPreferencesUtils.createSharedPreferencesUtils(context); sharedPreferencesUtils.putString(R.string.sp_saved_name_ubication, nombreUbicacion); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }; }
已尝试操作
- 修改AlertDialog背景色
- 修改Spinner布局样式
子布局文件
spinner_item.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerItemStyle" android:singleLine="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:layout_marginTop="@dimen/text_size_14pt" android:textColor="@color/v2col_lama_dark" android:textAlignment="inherit" />
custom_spinner_dropdown_item.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools" android:gravity="start" android:ellipsize="end" android:maxLines="1" tools:text="Dipole asasdasd asd asdasd asd asdasda sda sda sda dasda sda sd" android:textSize="@dimen/text_size_32pt" android:textStyle="bold" android:textColor="@color/v2col_lama_dark" android:padding="8dip" />
内容的提问来源于stack exchange,提问作者smiranda
相关产品推荐
相关产品推荐

