Spinner Innenpolster ist bei Android 6.0.1 größer.
Intro:
Mit der neuen Version von Android 6.0.1 scheint Android einige Änderungen an der Spinner-Komponente vorgenommen zu haben, da die innere Polsterung um die Daunen-Karotte standardmäßig etwas größer ist.
Ich habe dies bei einer App bemerkt, bei der ich nichts am Code geändert habe, sondern einfach das Betriebssystem auf dem Gerät aktualisiert habe und die Spinner dennoch unterschiedliche Größen haben.
Situation
Ich habe 2 Spinner nebeneinander in einemRelativeLayout
(Beachten Sie den Rest der Komponenten, ich habe alles hinzugefügt, damit Sie diesen Teil des Layouts sehen können - die völlig unnötigen Eigenschaften oder Ansichts-IDs wurden entfernt)
<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>
Das vom Spinner-Adapter für das @ verwendete LayogetView()
Methode ist das:
<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>
Exemplified:
Der Screenshot besteht aus 2 separaten Screenshots:
Der auf der Oberseite ist auf einem @ genommNexus Gerät läuft aufAndroid 6.0Der unten stehende ist auch auf einem @ aufgenommNexus Gerät ABER läuft aufAndroid 6.0.1EDIT 1ie Verwendung von AppCompatSpinner aus der Supportbibliothek ändert das Verhalten nicht. Die verwendete Unterstützungsbibliotheksversion ist23.1.1