Android Question COMBO SPINNER VISIBLE in 2025+ (SOLVED)

netsistemas

Active Member
Licensed User
Longtime User
With the latest update, I had to remove the default theme and create a custom one through the Manifest.
It's clear I don't have it in my control. With what I added, the combo key has disappeared, and I don't know how to add it back, because the user can't clearly see that it's a combo (B4XCombo - CustomView).
Where do I look or how do I get it or stop this whole theme?

This is my current Manifest (only part of then):

B4X:
SetApplicationAttribute(android:theme, "@style/temants")

CreateResource(values, themes.xml,
<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Da un parent sólido al tema -->
   
    <style name="temants" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- Diálogos tuyo -->
        <item name="android:alertDialogTheme">@style/DarkAlertDialog</item>

        <!-- EditText tuyo -->
        <item name="android:editTextStyle">@style/DarkEditText</item>

        <!-- Spinner global -->
        <item name="android:spinnerStyle">@style/DarkSpinner</item>

        <!-- Fuerza colores de texto base afecta a vistas simples como los items por defecto -->
        <item name="android:textColorPrimary">@android:color/white</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textColorHint">#80FFFFFF</item>

        <!-- Estilo del ListView del desplegable de los Spinners -->
        <item name="android:dropDownListViewStyle">@style/DarkDropDownList</item>
       
           
        <item name="android:textColorPrimary">@android:color/white</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textColorHint">#80FFFFFF</item>
       
       
    </style>

    <!-- ===== SPINNER OSCURO ===== -->
    <style name="DarkSpinner" parent="@android:style/Widget.Spinner">
        <!-- Caja cerrada -->
        <item name="android:background">#606060</item>
        <!-- Texto en la caja cerrada -->
        <item name="android:textColor">@android:color/white</item>

        <!-- Desplegable -->
        <item name="android:popupBackground">#606060</item>
        <!-- MUY IMPORTANTE: estilo del texto tanto cerrado como desplegable -->
        <item name="android:spinnerItemStyle">@style/DarkSpinnerItem</item>
        <item name="android:dropDownItemStyle">@style/DarkSpinnerItem</item>
    </style>

    <!-- Texto de cada ítem cerrado y lista -->
   
   
    <style name="DarkSpinnerItem" parent="@android:style/Widget.TextView.SpinnerItem">
        <item name="android:textColor">@android:color/white</item>
        <item name="android:background">#606060</item>
        <!-- Por si algún OEM aplica paddings mínimos -->
        <item name="android:paddingLeft">12dp</item>
        <item name="android:paddingRight">12dp</item>
        <item name="android:paddingTop">8dp</item>
        <item name="android:paddingBottom">8dp</item>
    </style>

    <!-- ListView del desplegable fondo negro y separadores opcionales -->
    <style name="DarkDropDownList" parent="@android:style/Widget.ListView.DropDown">
        <item name="android:background">#606060</item>
        <item name="android:cacheColorHint">@android:color/transparent</item>
       
        <!-- Si quieres líneas entre opciones descomenta estas dos  -->
        <item name="android:listDivider">@android:color/darker_gray</item>
        <item name="android:dividerHeight">1dp</item>
       
    </style>

    <!-- Tus estilos previos para que no se pierdan -->
    <style name="DarkAlertDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
        <item name="android:background">#222222</item>
        <item name="android:textColorPrimary">@android:color/white</item>
        <item name="android:buttonBarStyle">@style/DarkDialogButtons</item>
    </style>

    <style name="DarkDialogButtons" parent="@android:style/Widget.DeviceDefault.Button.Borderless">
        <item name="android:textColor">#FFCC33</item>
    </style>

    <style name="DarkEditText" parent="@android:style/Widget.EditText">
        <item name="android:background">#606060</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textCursorDrawable">@null</item>
    </style>


</resources>
)




'SetApplicationAttribute(android:theme, "@android:style/Theme.Light.NoTitleBar")

'CreateResource(values, themes.xml,
'<resources>
 '   <style name="MyOldTheme" parent="@android:style/Theme.Holo.Light">
 '       <item name="android:windowNoTitle">true</item>
 '       <item name="android:windowFullscreen">true</item>
 '   </style>
'</resources>
')
'SetApplicationAttribute(android:theme, "@style/MyOldTheme")



AddManifestText(
<uses-sdk android:minSdkVersion="24" android:targetSdkVersion="29"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
 
Last edited:

netsistemas

Active Member
Licensed User
Longtime User
SOLVED:
comment this code:
(don't do this:)
Combo.cmbBox.Color = Colors.white


'Combo.cmbBox.Color = Colors.white



and do this in manifext (by chatgpt):

1º ) Cambia el estilo del Spinner (no uses color plano)​


En tu themes.xml deja así DarkSpinner:



<style name="DarkSpinner" parent="@android:style/Widget.Spinner">
<!-- Fondo con flecha -->
<item name="android:background">@drawable/dark_spinner_with_arrow</item>

<!-- Texto y popup -->
<item name="android:textColor">@android:color/white</item>
<item name="android:popupBackground">#606060</item>
<item name="android:spinnerItemStyle">@style/DarkSpinnerItem</item>
<item name="android:dropDownItemStyle">@style/DarkSpinnerItem</item>

<!-- Padding para que el texto no tape la flecha -->
<item name="android:paddingLeft">12dp</item>
<item name="android:paddingRight">36dp</item>
</style>

DELETE THIS:
Importante: quita esta línea antigua que borra la flecha:

<item name="android:background">#606060</item>

2) Crea el drawable con la flecha​


Añade este recurso (queda en res/drawable/dark_spinner_with_arrow.xml). En B4A:



CreateResource(drawable, dark_spinner_with_arrow.xml,
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Fondo oscuro -->
<item>
<shape android:shape="rectangle">
<solid android:color="#606060"/>
<corners android:radius="4dp"/>
</shape>
</item>

<!-- Flecha a la derecha, centrada verticalmente -->
<item android:gravity="right|center_vertical" android:right="12dp">
<bitmap
android:src="@android:drawable/arrow_down_float"
android:tint="@android:color/white"
android:antialias="true"/>
</item>
</layer-list>
)


Con esto recuperas la flecha en todos los Spinner (y por tanto en B4XComboBox en B4A, que lo usa por debajo), manteniendo tu tema oscuro.
 
Upvote 0
Top