Я использую android spinner и edittext из поддержки lib v21. Я хотел бы выровнять текст так же, как edittext, как показано на рисунке. Но заклинание deafult включает интервал или дополнение. Поэтому я хотел бы удалить его, чтобы выровнять текст слева. Пожалуйста, помогите, как удалить его.Удалите интервал или заполнение в android Spinner
ответ
Попробуйте это,
Создание пользовательского макета (как вам нужно) для вращателя строки.
раздуйте компоновку при установке адаптера данных на счетчик.
Вы можете настроить свой собственный Spinner через девять пластыря и указать отступы
В вашем 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" />
не работает - 30.11.2017 – JohannaNoobie
Если вы используете пользовательский адаптер, попробуйте установить отступы в 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;
}
макет TextView
, который отображается в вашем Spinner
идет от SpinnerAdapter
, который предусматривает 2 метода:
getView(position, convertView, parent)
: возвращает View для сложенного состояния, вы можете изменить это, чтобы вернуть различные макеты для различных выбранного элементаgetDropdownView(position, convertView, parent)
: возвращение View для каждого ниспадающего элемента в расширенном состоянии (после нажатия кнопки Spinner, чтобы открыть всплывающее/диалог выбора)
В в вашем случае вы должны переопределить SpinnerAdapter.getView(position, convertView, parent)
и раздуть макет с заполнением/интервалом по вашему выбору.
Например:
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
}
Рез/макет/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
indirect subclasses (ArrayAdapter<T>, BaseAdapter, CursorAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, ThemedSpinnerAdapter
), просто убедитесь, что поставляете правильный макет, который будет использоваться методом getView()
.
Если лет не хотят связываться в Java код и он в стилях
Поиск для этого файла (Ctrl + 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>
Вы также можете удалить отступы блесны в 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">
Эта работа для меня
Spinner spn = (Spinner) findViewById(R.id.spn);
spn.setPadding(0, spn.getPaddingTop(), spn.getPaddingRight(), spn.getPaddingBottom());
Я просто ударил этот вопрос, а также. Я смог решить его с корректировкой поля, а не отступом, поэтому настройте android: marginStart = "0dp" на элемент spinner.
Этот адаптер массива удаляет левую прокладку в Android Spinner.
Котлин версия:
open class NoPaddingArrayAdapter<T>(context: Context, layoutId: Int, items: List<T>?) : ArrayAdapter<T>(context, layoutId, items) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? {
val view = super.getView(position, convertView, parent)
view.setPadding(0,view.paddingTop,view.paddingRight,view.paddingBottom)
return view
}
}
работал в моем случае .. но, возможно, супер вид ненужно. Просто настройка «convertView.setPadding()» должна работать. –
@Чан, какой адаптер вы используете здесь? –
@VolodymyrKhodonovych SpinnerAdapter –