вид-текст-в-центре-оф-вращателя-когда-выберите-из-выпадающего-лист
Я хочу выровнять текст представления счетчика по центру. Я гуглю, но ничего не нашел, кто-нибудь знает об этом? любая помощь или предложение приветствуются
вид-текст-в-центре-оф-вращателя-когда-выберите-из-выпадающего-лист
Я хочу выровнять текст представления счетчика по центру. Я гуглю, но ничего не нашел, кто-нибудь знает об этом? любая помощь или предложение приветствуются
Создайте адаптер для вашего счетчика, например,
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);
}
});
Установка 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"/>
Поздно к игре, но я хотел добавить это для будущих пользователей только потому, что нашел это простым решением для моей проблемы. Это позволило мне сосредоточить простой текст без создания пользовательского макета. То, как я это делал, это использовать 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
android:textAlignment="center"
Вуаля!
Позвольте мне ответить. Также важно сделать пространство в 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"
/>