Intro:Spinner imbottitura interna è più grande su Android 6.0.1
Con la nuova versione di Android 6.0.1, sembra che Android ha fatto alcuni cambiamenti sulla componente Spinner perché per impostazione predefinita, l'imbottitura interna in tutto il la carota in giù è un po 'più grande.
Ho notato questo in un'app in cui non ho modificato nulla nel codice, ma ho semplicemente aggiornato il sistema operativo sul dispositivo e tuttavia i pennini hanno dimensioni diverse.
Situazione:
Ho 2 filatori uno accanto all'altro in un RelativeLayout
(mente il resto dei componenti, ho aggiunto tutto in modo da poter vedere questa parte del layout - rimosso le proprietà del tutto inutile o visualizzare ids)
<RelativeLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/container_for_buttons_on_the_right"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true">
<!-- Buttons here-->
</LinearLayout>
<android.support.v7.widget.AppCompatSpinner
android:id="@+id/spinner_1"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ViewSwitcher
android:id="@+id/spinner_switch"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_toEndOf="@id/spinner_1"
android:layout_toLeftOf="@id/container_for_buttons_on_the_right"
android:layout_toRightOf="@id/spinner_1"
android:layout_toStartOf="@id/container_for_buttons_on_the_right"
android:inAnimation="@anim/fade_in"
android:outAnimation="@anim/fade_out">
<android.support.v7.widget.AppCompatSpinner
android:layout_width="wrap_content"
android:layout_height="match_parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- ImageView properties are incomplete but I need it there.-->
</ViewSwitcher>
</RelativeLayout>
il layout utilizzato dall'adattatore Spinner per il metodo getView()
è questo:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="center_vertical"
android:singleLine="true"
tools:text="Test" />
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0"
android:gravity="center"
android:paddingLeft="4dp"
android:singleLine="true"
android:textColor="@color/text_primary"
android:textSize="@dimen/text_size_body"
tools:ignore="RtlHardcoded,RtlSymmetry"
tools:text="7%" />
</LinearLayout>
esemplificato:
La schermata è combinata di 2 screenshots separati adottate:
- Quello in alto è fatta in un 5 dispositivo Nexus esecuzione su Android 6.0
- L' uno di seguito è anche preso su un dispositivo Nexus 5 MA in esecuzione su Android 6.0.1
- EDIT 1
Utilizzando AppCompatSpinner dalla libreria di supporto non cambia il comportamento. La versione della libreria di supporto utilizzata è 23.1.1
Abbiamo dovuto aggiungere più padding attorno al cursore in basso per evitare un bug durante la visualizzazione dell'effetto di ripple. Se hai bisogno di una dimensione costante, copia lo sfondo fuori dal framework e usalo oppure usa AppCompat. – alanv
Uso AppCompat :). Potresti dirmi qual è la dimensione esatta di quella imbottitura? Mi sembra che siano circa 8 o 10? – Mike
E '12dp di fine padding e un gap costante di 48dp in coda, che è in effetti 12dp di start padding. Puoi controllare direttamente nella directory di Android SDK sotto 'piattaforme/android-23/data/res/drawable/spinner_background_material.xml'. – alanv