Ответ 1
Я столкнулся с одной и той же проблемой, и после исследования какое-то время ответ довольно прост:
<Spinner
...
style="@style/Widget.AppCompat.Spinner.Underlined"
... />
EditText
, в котором внизу отображается строка, но это не в случае spinner.
Как это можно сделать?
layout.xml
<EditText
android:id="@+id/twitterEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="@string/twitter_account"
android:inputType="textWebEmailAddress" />
<Spinner
android:id="@+id/countrySpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="@string/country" />
<Spinner
android:id="@+id/stateSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="@string/state" />
<Spinner
android:id="@+id/citySpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="@string/city" />
Я столкнулся с одной и той же проблемой, и после исследования какое-то время ответ довольно прост:
<Spinner
...
style="@style/Widget.AppCompat.Spinner.Underlined"
... />
<android.support.v7.widget.AppCompatSpinner
...
style="@style/Widget.AppCompat.Spinner.Underlined"
app:backgroundTint="YOUR_COLOR_HERE"
... />
Эта строка - это то, что вы пишете выше. Spinner не имеет этой строки, потому что это не текстовое поле ввода. Если вы хотите иметь линию под спиннером, вы можете вставить ее ниже, притворяя ее так:
<Spinner
android:id="@+id/firstSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="@string/firstHint" />
<!-- Separator view -->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<Spinner
android:id="@+id/secondSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="@string/secondHint" />
<!-- Insert separator view again-->
Вероятно, вам нужно немного поиграть с полями. Также обратите внимание, что черная линия находится только в Android 5.0, и весь макет будет сильно отличаться от старых андроидов. Если вы хотите только черную линию на Android 5.0, вам нужно сделать копию макета и вставить ее в каталог с именем layout-v21
и иметь другую версию в каталоге layout
по умолчанию.
Поскольку никто не опубликовал фактический ответ, здесь вы идете:
<item android:bottom="1dp"
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle" >
<stroke
android:width="0.5dp"
android:color="@android:color/black" />
</shape>
</item>
Работает
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:spinnerStyle">@style/holoSpinner</item>
</style>
<style name="holoSpinner" parent="Widget.AppCompat.Spinner.Underlined">
<item name="android:textSize">16sp</item>
<item name="android:textColor">#3F51B5</item>
</style>
Счастливое кодирование
Если @style/Widget.AppCompat.Spinner.Underlined
не найден или нет Работа, используемая ниже style
, для счетчика внизу. Подчеркнуто
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
style="@android:style/Widget.Material.Spinner.Underlined"
android:layout_height="wrap_content"
/>