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

Возможный дубликат с https://stackoverflow.com/q/4545559/760489

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

благодаря

Solutions Collecting From Web of "Установить выравнивание текста в центре в spinner в android"

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

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); 

Вам нужно установить свой собственный макет для элемента 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> 

Это очень просто, просто создайте 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 сделает трюк.

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

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

Поздно к игре, но я хотел добавить это для будущих пользователей только потому, что нашел это простым решением для моей проблемы. Это позволило мне сосредоточить простой текст без создания пользовательского макета. То, как я это делал, это использовать 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-файлы были недоступны, и вам не нужно использовать специальный макет, чтобы центрировать простой счетчик.

Позвольте мне ответить. Также важно сделать пространство в 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" />