Удаление интервала или заполнения в андроиде
Я использую android spinner и edittext из поддержки lib v21. Я хотел бы выровнять текст так же, как edittext, как показано на рисунке. Но заклинание deafult включает интервал или дополнение. Поэтому я хотел бы удалить его, чтобы выровнять текст слева. Пожалуйста, помогите, как удалить его.
![enter image description here]()
Ответы
Ответ 1
В вашем 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;
}
Ответ 2
Попробуйте сделать код ниже. Измените атрибут стиля в макете элемента списка счетчиков на 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" />
Ответ 3
Если вы используете пользовательский адаптер, попробуйте установить дополнение в 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;
}
Ответ 4
Этот адаптер массива удаляет левый отступ в 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
}
}
Ответ 5
Попробуйте это,
-
Создайте собственный макет (по мере необходимости) для строки spinner.
-
раздуйте макет, когда вы установите адаптер данных на счетчик.
Ответ 6
Макет для TextView
, который отображается в вашем Spinner
, поступает из вашего SpinnerAdapter
, который предоставляет 2 метода:
-
getView(position, convertView, parent)
: возвращает Вид для свернутого состояния, вы можете переопределить это, чтобы возвращать разные макеты для разных выбранных элементов
-
getDropdownView(position, convertView, parent)
: return 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
косвенные подклассы (ArrayAdapter<T>, BaseAdapter, CursorAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, ThemedSpinnerAdapter
), просто убедитесь, что правильно макет, который будет использоваться методом getView()
.
Ответ 7
Если вы не хотите испортить код Java и иметь его в стилях
Поиск этого файла (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>
Ответ 8
Вы также можете удалить прописную часть счетчика в 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">
Ответ 9
Вы можете настроить собственный Spinner через Девять патчей и указать дополнение
Ответ 10
Я просто попал в эту проблему. Я смог решить его с помощью корректирующего поля на самом деле вместо заполнения, поэтому настройте android: marginStart = "0dp" на элемент spinner.
Ответ 11
в вашем onViewCreated()
spinner.post { spinner.setPadding(0,0,0,0) }
Ответ 12
Может быть, это самый простой способ, и он просто работает. Чтобы уменьшить отступ слева от Spinner
, вы можете использовать установку отступа влево на минус, чтобы он двигался влево. Например, android:layout_marginLeft="-8dp"
Это не лучшая практика, а простой взлом. Вот пример кода:
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="-8dp"
android:entries="@array/arr_tipe_kendaraan"
android:gravity="left"
android:paddingTop="14dp"
android:paddingBottom="8dp"
android:prompt="@string/action_sign_in"
android:spinnerMode="dialog" />
Надеюсь это поможет.
Ответ 13
Эта работа для меня
Spinner spn = (Spinner) findViewById(R.id.spn);
spn.setPadding(0, spn.getPaddingTop(), spn.getPaddingRight(), spn.getPaddingBottom());