在android微调中删除间距或填充

我使用的是支持lib v21的android spinner和edittext。 我想将文本alignment,如图所示,就像edittext一样。 但是,default spinner包括间隔或填充。 所以,我想删除它,以文本左alignment。 请帮助如何删除它。

在这里输入图像说明

Solutions Collecting From Web of "在android微调中删除间距或填充"

在你的SpinnerAdapter中:

@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; } 

尝试下面的代码来这样做。 将您的微调列表项目布局中的样式属性更改为textViewStyle,如下所示

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/textViewStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="false" android:textAlignment="inherit" android:textAppearance="?android:attr/textAppearanceMedium" /> 

如果您使用自定义适配器,则尝试在getView()设置填充:

 @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; } 

您也可以在xml中删除微调器的填充

只需要将填充设置为0dp。

  <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="left" android:padding="0dp" android:id="@+id/my_spinner"> 

尝试这个,

  1. 为微调器行创build自定义布局(如您所需)。

  2. 在将数据适配器设置为微调器时扩充布局。

显示在Spinner TextView的布局来自您的SpinnerAdapter ,它提供了两种方法:

  • getView(position, convertView, parent) :返回视图的折叠状态,你可以覆盖这个返回不同的布局select不同的项目
  • getDropdownView(position, convertView, parent) :返回展开状态下的每个下拉项目的视图(单击“微调”以打开popup菜单/对话框进行select)

在你的情况下,你应该重写你的SpinnerAdapter.getView(position, convertView, parent)并使用你select的填充/间隔来填充布局。

例如:

 spinner.setAdapter(new MyAdapter()); 

MyAdapter.java

 class MyAdapter implements SpinnerAdapter { @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.spinner_item, parent, false); } // bind your data here return convertView; } // other implementation } 

RES /布局/ spinner_item.xml

 <!-- set padding margin whatever here --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

您还可以方便地使用提供的SpinnerAdapter间接子类 ( ArrayAdapter<T>, BaseAdapter, CursorAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, ThemedSpinnerAdapter )的ArrayAdapter<T>, BaseAdapter, CursorAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, ThemedSpinnerAdapter ,只要确保提供getView()方法将使用的正确布局。

您可以通过九个补丁自定义自己的微调,并指定填充

如果你不想在Java代码中混淆,并有风格

search此文件(Cmd + Shift + O) abc_spinner_textfield_background_material.xml

并复制到您的项目。 删除根元素的所有插入值,并将该文件作为您的微调框的背景。

在我的情况下,它看起来像这样( drawable/spinner_background.xml

 <inset xmlns:android="http://schemas.android.com/apk/res/android"> <selector> <item android:state_checked="false" android:state_pressed="false"> <layer-list> <item android:drawable="@drawable/abc_textfield_default_mtrl_alpha" /> <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" /> </layer-list> </item> <item> <layer-list> <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha" /> <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" /> </layer-list> </item> </selector> </inset> 

在我的styles.xml中,我以这种方式使用它

 <style name="DxSpinner" parent="@style/Widget.AppCompat.Spinner.Underlined"> <item name="android:background">@drawable/spinner_background</item> </style> 

这为我工作

 Spinner spn = (Spinner) findViewById(R.id.spn); spn.setPadding(0, spn.getPaddingTop(), spn.getPaddingRight(), spn.getPaddingBottom()); 

我也碰到了这个问题。 我能够通过实际调整边距而不是填充来解决问题,所以将android:marginStart =“0dp”设置为微调项目。