Подтвердить что ты не робот

Удаление интервала или заполнения в андроиде

Я использую android spinner и edittext из поддержки lib v21. Я хотел бы выровнять текст так же, как edittext, как показано на рисунке. Но заклинание deafult включает интервал или дополнение. Поэтому я хотел бы удалить его, чтобы выровнять текст слева. Пожалуйста, помогите, как удалить его.

enter image description here

4b9b3361

Ответ 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());