我和Spinner玩后自己做了。这是一个非常好的解决方案。
首先使用您选择的指标图像创建一个下拉列表。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle"/>
</item>
<item
android:width="24dp"
android:height="24dp"
android:gravity="right|center_vertical">
<bitmap
android:src="@drawable/ic_dropdown"
android:tint="@color/colorPrimaryDark"/>
</item></layer-list>
然后将其分配给Spinner的背景。
<Spinner
android:id="@+id/basket_spinner_item_quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:padding="0dp"
android:background="@drawable/ic_spinner_dropdown"/>
现在,根据您的要求调整微调器项目的填充和对齐。
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/simple_spinner_text_quantity"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="20dp"
android:paddingRight="25dp"
android:gravity="right"
android:textAlignment="gravity"/>
只需将以下属性添加到您的spinner xml元素:
对于API <17:
android:gravity="right"
对于API => 17:
android:gravity="end"
快速解决
android:layout_marginStart="-40dp"
根据需要,发挥负利润。在你里面旋转项目xml
由于某种原因,给padding:20dp
解决了我的问题。此外,使用translationX
的值来调整下拉图标的位置。最后,您可以使用layout_marginLeft
和layout_marginRight
相应地移动整个下拉列表。
使用以下代码进行快速修复
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="-9dp"
android:layout_marginTop="10dp"
android:entries="@array/almanac"
android:gravity="left"
android:padding="0dp"
android:spinnerMode="dropdown"
android:layout_marginStart="-9dp" />
删除xml中的微调器的填充
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:padding="0dp"
android:id="@+id/my_spinner">
SpinnerAdapter或您的Adapter类应根据您的需要进行定制。
SpinnerAdapter.getView(position, convertView, parent)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
view.setPadding(0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom());
return view;
}
在微调器列表项布局中更改样式属性