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

Установить выравнивание текста в центре в spinner в android

вид-текст-в-центре-оф-вращателя-когда-выберите-из-выпадающего-лист

Я хочу выровнять текст представления счетчика по центру. Я гуглю, но ничего не нашел, кто-нибудь знает об этом? любая помощь или предложение приветствуются

4b9b3361

Ответ 1

Создайте адаптер для вашего счетчика, например,

ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.my_spinner_style,array_of_values) {

    public View getView(int position, View convertView,ViewGroup parent) {

        View v = super.getView(position, convertView, parent);

        ((TextView) v).setTextSize(16);

        return v;

    }

    public View getDropDownView(int position, View convertView,ViewGroup parent) {

        View v = super.getDropDownView(position, convertView,parent);

        ((TextView) v).setGravity(Gravity.CENTER);

        return v;

    }

};

Теперь ваш макет R.layout.my_spinner_style,

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />

Теперь установите этот адаптер на свой счетчик,

spinner.setAdapter(adapter);

Ответ 2

Вам нужно установить свой собственный макет для элемента spinner.

SpinnerAdapter adap = new ArrayAdapter<String>(this, R.layout.spinner_item, new String[]{"A", "B", "C"});
spriner.setAdapter(adap);

Где R.layout.spinner_item - это макет с контентом:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent" 
    android:gravity="center" 
    android:textColor="#000000" 
    android:text="Sample Text" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp"></TextView>

Ответ 3

Это очень просто, просто создайте файл xml с именем spinner_item.xml с контентом как

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#111111"
android:padding="10dp"
android:textAlignment="center"
/>

Теперь в вашем классе java, несмотря на добавление ресурса просмотра по умолчанию для Android, добавьте свой собственный ресурс просмотра как

ArrayAdapter<String> adapter= new ArrayAdapter<String>(context, R.layout.spinner_item, myList);
 adapter.setDropDownViewResource(R.layout.spinner_item);

Строка textAlignment выполнит трюк.

Ответ 4

Это работает без изменений макета

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
               ((TextView) adapterView.getChildAt(0)).setGravity(Gravity.CENTER);
        }
 });

Ответ 5

Установка textAlignment to center будет размещать текст в центре.

Android: TextAlignment = "центр"

        <android.support.v7.widget.AppCompatSpinner
            android:id="@+id/spinner_areas"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerInParent="true"
            android:visibility="visible"
            android:gravity="center"
            android:textAlignment="center"/>

Ответ 6

Поздно к игре, но я хотел добавить это для будущих пользователей только потому, что нашел это простым решением для моей проблемы. Это позволило мне сосредоточить простой текст без создания пользовательского макета. То, как я это делал, это использовать padding

<Spinner
    android:id="@+id/example_spinner"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="2dp"
    android:paddingBottom="2dp" />

Мне удалось сконцентрировать мой текст внутри моего счетчика, используя этот метод. Вероятно, это будет работать только для простых случаев, но вы, вероятно, захотите использовать индивидуальный макет для более сложных случаев. Это просто, чтобы ваши xml файлы были опущены и не нужно использовать специальный макет, чтобы центрировать простой счетчик.

Ответ 7

Добавьте эту строку в Spinner

android:textAlignment="center"

Вуаля!

Ответ 8

Позвольте мне ответить. Также важно сделать пространство в Spinner.

Неправильно:

<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

Справа:

<Spinner
android:id="@+id/spinner"
android:layout_width="100dp"
android:layout_height="wrap_content"
/>