You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:44:53