vivaldi theme personalizado name google fondo ff0202 db5945 content como color chrome cambiar and android android-spinner nine-patch

theme - como cambiar el fondo de google chrome en android



¿Cómo cambiar el diseño y el color del fondo del girador para Android? (11)

Estoy desarrollando una aplicación en la que necesito cambiar el diseño del fondo del hilandero para que coincida con el color de fondo. Investigué y descubrí que necesito crear una imagen de 9 parches. He hecho la creación de la imagen de 9 parches y la utilicé en la aplicación, pero parece más grande que la ruleta normal y tampoco pude ver el botón desplegable en la ruleta.

Estoy tan feliz de que me brinden un claro tutorial desde que empiece a crear la imagen de 9 parches para Spinner y la usen en la aplicación.

Código para el Spinner

<Spinner android:id="@+id/spnIncredientone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/txtMixtureTitle" android:layout_marginLeft="5dip" android:layout_marginRight="5dip" android:background="@drawable/spinner_background" android:prompt="@string/selectmixture" />


A pesar de que es una publicación anterior, pero me encontré con ella mientras buscaba el mismo problema, así que pensé que iba a agregar mis dos centavos también. Aquí está mi versión del fondo de Spinner con la flecha DropDown. Solo el fondo completo, no solo la flecha.

Así es como se ve ...

Aplicar en spinner como ...

<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/spinner_bg" />

spinner_bg.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <color android:color="@color/InputBg" /> </item> <item android:gravity="center_vertical|right" android:right="8dp"> <layer-list> <item android:width="12dp" android:height="12dp" android:gravity="center" android:bottom="10dp"> <rotate android:fromDegrees="45" android:toDegrees="45"> <shape android:shape="rectangle"> <solid android:color="#666666" /> <stroke android:color="#aaaaaa" android:width="1dp"/> </shape> </rotate> </item> <item android:width="30dp" android:height="10dp" android:bottom="21dp" android:gravity="center"> <shape android:shape="rectangle"> <solid android:color="@color/InputBg"/> </shape> </item> </layer-list> </item> </layer-list>

@color/InputBg debe reemplazarse por el color que desee como fondo.

Primero llena el fondo con el color deseado. Luego, una lista de capas hija forma un cuadrado y la gira 45 grados y luego un segundo rectángulo con color de fondo cubre la parte superior del cuadrado girado, lo que le da el aspecto de una flecha hacia abajo. (No se requiere un trazo adicional en un rectángulo girado)


Como señaló Jakob , android:popupBackground es el atributo clave para el menú desplegable (estado abierto del Spinner), pero en lugar de usar solo un color, obtuve los mejores resultados con un parche de 9 paneles como este:


menu_dropdown_panel.9.png

Tenga en cuenta que es muy fácil generar esta imagen de 9 parches para el color de fondo de su elección, por ejemplo, utilizando esta herramienta en línea como expliqué en esta respuesta .

Entonces, mi definición de Spinner XML se ve así:

<Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/navigationBlue" android:spinnerMode="dropdown" android:popupBackground="@drawable/menu_dropdown_panel" />

Y el resultado:

(Para las fuentes personalizadas, como en la captura de pantalla anterior, también se necesita un SpinnerAdapter personalizado ).

Funciona al menos en Android 4.0+ (API nivel 14+).


Intenté las muestras anteriores pero no funcionó para mí. La solución más simple funciona para mí increíble:

<RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#fff" > <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/Area"/> </RelativeLayout>


Necesita trabajar con el fondo transparente en un spinner.

spinner_enable.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="#00000000" /> <padding android:bottom="2dp" /> </shape> </item> <item> <shape android:shape="rectangle"> <solid android:color="#00000000" /> </shape> </item> <item android:bottom="-2dp" android:left="-3dp" android:right="-3dp" android:top="-3dp"> <shape> <solid android:color="#00000000" /> <stroke android:width="2dp" android:color="#00aedb" /> </shape> </item> <item> <rotate android:fromDegrees="90" android:pivotX="100%" android:pivotY="60%" android:toDegrees="135"> <rotate android:fromDegrees="135" android:pivotX="100%" android:pivotY="60%" android:toDegrees="45"> <shape android:shape="rectangle"> <stroke android:width="10dp" android:color="#00aedb" /> <solid android:color="#00aedb" /> </shape> </rotate> </rotate> </item> </layer-list>

spinner_disable.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="#00000000" /> <padding android:bottom="2dp" /> </shape> </item> <item> <shape android:shape="rectangle"> <solid android:color="#00000000" /> </shape> </item> <item android:bottom="-2dp" android:left="-3dp" android:right="-3dp" android:top="-3dp"> <shape> <solid android:color="#00000000" /> <stroke android:width="2dp" android:color="#d9dadc" /> </shape> </item> <item> <rotate android:fromDegrees="90" android:pivotX="100%" android:pivotY="60%" android:toDegrees="135"> <rotate android:fromDegrees="135" android:pivotX="100%" android:pivotY="60%" android:toDegrees="45"> <shape android:shape="rectangle"> <stroke android:width="10dp" android:color="#d9dadc" /> <solid android:color="#d9dadc" /> </shape> </rotate> </rotate> </item> </layer-list>

spinner_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/spinner_enable" android:state_enabled="true" android:state_pressed="false" /> <!-- enable --> <item android:drawable="@drawable/spinner_disable" android:state_enabled="false" /> <!-- disable --> </selector>


Necesitarás crear un nuevo diseño personalizado para tus elementos de giro, así, lo nombraré:

spinner_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:textColor="#ff0000" />

Luego, en su declaración de spinner, necesita hacer que su spinner use el nuevo diseño en el adaptador:

ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.layout.spinner_item, YOUR_SPINNER_CONTENT); spinner.setAdapter(adapter);

Para personalizar elementos de la lista desplegable, necesita crear otro diseño, lo llamaré spinner_dropdown_item.xml:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:textColor="#aa66cc"/>

y luego en el adaptador:

ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.layout.spinner_item, YOUR_SPINNER_CONTENT); adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); spinner.setAdapter(adapter);


Puede cambiar el color de fondo y el icono desplegable como hacer de esta manera

Paso 1: en la carpeta dibujable, crea background.xml para border of spinner.

<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@android:color/transparent" /> <corners android:radius="5dp" /> <stroke android:width="1dp" android:color="@color/darkGray" /> </shape> //edited

Paso 2: para el diseño del diseño de la ruleta use este icono desplegable o cualquier imagen drop.pnj

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="3dp" android:layout_weight=".28" android:background="@drawable/spinner_border" android:orientation="horizontal"> <Spinner android:id="@+id/spinner2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_gravity="center" android:background="@android:color/transparent" android:gravity="center" android:layout_marginLeft="5dp" android:spinnerMode="dropdown" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_gravity="center" android:src="@mipmap/drop" /> </RelativeLayout>

Finalmente se ve como la imagen de abajo y se puede hacer clic en todas partes en el área redonda y sin necesidad de escribir haga clic en Lister para imageView.

Para más detalles, puedes ver Here


Puede establecer el color de fondo de los rotuladores en xml de esta manera:

android:background="YOUR_HEX_COLOR_CODE"

y si usa el menú desplegable con su spinner, puede establecer su color de fondo de esta manera:

android:popupBackground="YOUR_HEX_COLOR_CODE"


código spinner:

<TextView android:id="@+id/spinner" android:gravity="bottom" android:layout_marginTop="16dp" android:background="@drawable/spinner_selector" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:paddingLeft="16dp" android:textSize="16sp" android:text="TextView" />

spinner_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/spinner_enable" android:state_enabled="true" android:state_pressed="false" /> <!-- enable --> <item android:drawable="@drawable/spinner_clicked" android:state_pressed="true" android:state_enabled="true" /> <item android:drawable="@drawable/spinner_disable" android:state_enabled="false" /> <!-- disable --> </selector>

spinner_disable.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="#ddf" /> <padding android:bottom="1dp" /> </shape> </item> <item android:bottom="1dp"> <shape android:shape="rectangle" > <solid android:color="#fff" /> <padding android:left="0dp" android:right="0dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="#fff" /> </shape> </item> <item android:gravity="center_vertical|right" android:right="8dp"> <layer-list> <item android:width="12dp" android:height="12dp" android:bottom="10dp" android:gravity="center"> <rotate android:fromDegrees="45" android:toDegrees="45"> <shape android:shape="rectangle"> <solid android:color="#ddf" /> <stroke android:width="1dp" android:color="#aaaaaa" /> </shape> </rotate> </item> <item android:width="30dp" android:height="10dp" android:bottom="21dp" android:gravity="center"> <shape android:shape="rectangle"> <solid android:color="@android:color/white" /> </shape> </item> </layer-list> </item> </layer-list>

spinner_clicked.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="#00f" /> <padding android:bottom="1dp" /> </shape> </item> <item android:bottom="1dp"> <shape android:shape="rectangle" > <solid android:color="#fff" /> <padding android:left="0dp" android:right="0dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="#fff" /> </shape> </item> <item android:gravity="center_vertical|right" android:right="8dp"> <layer-list> <item android:width="12dp" android:height="12dp" android:bottom="10dp" android:gravity="center"> <rotate android:fromDegrees="45" android:toDegrees="45"> <shape android:shape="rectangle"> <solid android:color="#00f" /> <stroke android:width="1dp" android:color="#aaaaaa" /> </shape> </rotate> </item> <item android:width="30dp" android:height="10dp" android:bottom="21dp" android:gravity="center"> <shape android:shape="rectangle"> <solid android:color="@android:color/white" /> </shape> </item> </layer-list> </item> </layer-list>

spinner_enable.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="#00f" /> <padding android:bottom="1dp" /> </shape> </item> <item android:bottom="1dp"> <shape android:shape="rectangle" > <solid android:color="#BBDEFB" /> <padding android:left="0dp" android:right="0dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="#BBDEFB" /> </shape> </item> <item android:gravity="center_vertical|right" android:right="8dp"> <layer-list> <item android:width="12dp" android:height="12dp" android:bottom="10dp" android:gravity="center"> <rotate android:fromDegrees="45" android:toDegrees="45"> <shape android:shape="rectangle"> <solid android:color="#00f" /> <stroke android:width="1dp" android:color="#aaaaaa" /> </shape> </rotate> </item> <item android:width="30dp" android:height="10dp" android:bottom="21dp" android:gravity="center"> <shape android:shape="rectangle"> <solid android:color="#BBDEFB" /> </shape> </item> </layer-list> </item> </layer-list>

funciona bien sin imágenes de nueve parches. api 21+


spinner_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/spinner_enabled" android:state_enabled="true" android:state_pressed="false" /> <!-- enable --> <item android:drawable="@drawable/spinner_clicked" android:state_enabled="true" android:state_pressed="true" /> <item android:drawable="@drawable/spinner_disabled" android:state_enabled="false" /> <!-- disable --> </selector>

spinner_enabled.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#00f" /> <padding android:bottom="2dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="#fff" /> </shape> </item> <item> <rotate android:fromDegrees="90" android:pivotX="100%" android:pivotY="60%" android:toDegrees="135"> <rotate android:fromDegrees="135" android:pivotX="100%" android:pivotY="60%" android:toDegrees="45"> <shape android:shape="rectangle"> <stroke android:width="10dp" android:color="#00f" /> <solid android:color="#00f" /> </shape> </rotate> </rotate> </item> </layer-list>

spinner_disabled.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#ddf" /> <padding android:bottom="2dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="#fff" /> </shape> </item> <item> <rotate android:fromDegrees="90" android:pivotX="100%" android:pivotY="60%" android:toDegrees="135"> <rotate android:fromDegrees="135" android:pivotX="100%" android:pivotY="60%" android:toDegrees="45"> <shape android:shape="rectangle"> <stroke android:width="10dp" android:color="#ddf" /> <solid android:color="#ddf" /> </shape> </rotate> </rotate> </item> </layer-list>

spinner_focused.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#00f" /> <padding android:bottom="2dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <solid android:color="#BBDEFB" /> </shape> </item> <item> <rotate android:fromDegrees="90" android:pivotX="100%" android:pivotY="60%" android:toDegrees="135"> <rotate android:fromDegrees="135" android:pivotX="100%" android:pivotY="60%" android:toDegrees="45"> <shape android:shape="rectangle"> <stroke android:width="10dp" android:color="#00f" /> <solid android:color="#00f" /> </shape> </rotate> </rotate> </item> </layer-list>

funciona bien sin imágenes de nueve parches. api 10+


Código de giro

<Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/text.white" android:paddingBottom="13dp" android:background="@drawable/bg_spinner"/>

bg_spinner.xml

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/colorPrimaryDark"/> <corners android:radius="10dp" /> </shape> </item> <item android:gravity="center_vertical|right" android:right="8dp"> <layer-list> <item android:width="12dp" android:height="12dp" android:gravity="center" android:bottom="10dp"> <rotate android:fromDegrees="45" android:toDegrees="45"> <shape android:shape="rectangle"> <solid android:color="#ffffff" /> <stroke android:color="#ffffff" android:width="1dp"/> </shape> </rotate> </item> <item android:width="20dp" android:height="10dp" android:bottom="21dp" android:gravity="center"> <shape android:shape="rectangle"> <solid android:color="@color/colorPrimaryDark"/> </shape> </item> </layer-list> </item> </layer-list>


<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Spinner android:layout_marginTop="8dp" android:background="@drawable/edit_border" android:visibility="visible" android:id="@+id/teach_repeat" android:entries="@array/on_off" android:textSize="12sp" android:textColor="#ffffff" android:layout_width="match_parent" android:layout_height="40dp" /> <ImageView android:layout_marginTop="8dp" android:layout_gravity="end" android:src="@drawable/ic_arrow_drop_down_white_18dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </FrameLayout>