2012-08-22 3 views
6

lolандроид Spinner: текстовый центр вертикально в блесны

мне нужно эти блесны вертикально центрировать текст. Я попытался вещи, как это в определении XML Spinner:

<Spinner 
    android:id="@+id/dir_spn" 
    android:layout_gravity="center_vertical" 
    android:gravity="center_vertical" 
    android:layout_weight="1"/> 

я пытался строить собственный падение вниз макет:

<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="@style/SpinnerDropDownItem" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

styles.xml:

<resources> 
<style name="SpinnerDropDownItem"> 
    <item name="android:gravity">center_vertical</item> 
    <item name="android:layout_gravity">center_vertical</item> 
    <item name="android:textColor">?android:attr/textColorPrimary</item> 
    <item name="android:textColorHighlight">#FFFF9200</item> 
    <item name="android:textColorHint">?android:attr/textColorHint</item> 
    <item name="android:textColorLink">#5C5CFF</item> 
    <item name="android:textSize">16sp</item> 
    <item name="android:textStyle">normal</item> 
</style> 
</resources> 

адаптер выпадающий набора :

adapter.setDropDownViewResource(R.layout.spinner_dropdown_item); 

ho w я получаю текст Spinner вертикально вертикально?

EDIT: может быть стоит отметить, что активность тематически в манифесте таким образом:

<resources> 
<style name="SpeakNSpell" parent="@android:style/Theme"> 
    <item name="android:minHeight">68sp</item> 
</style> 
</resources> 

, который делает все Просмотров по крайней мере, 68sp высокие. это влияет на текст внутри Spinner?

+0

Я бы свести его к простейшей форме и идти оттуда. Сначала попробуйте его без стиля и причудливого виджета. Сделайте простой макет TextView и установите силу тяжести в center_vertical и посмотрите, работает ли это. Кроме того, выпадающий макет - это * не * тот, который отображается при закрытии счетчика (как вы его показываете). Возможно, вам нужно применить свой стиль к макету, используемому при закрытии счетчика? – Barak

+0

Я не вижу ваш spinner 'android: layout_width =" wrap_content "и' android: layout_height = "wrap_content" ' – slybloty

ответ

8

Rewrite

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

Compare Layouts

верхняя Spinner является стандартным форматом android simple_spinner_item по умолчанию, а нижнее - тем же, но добавлено android:gravity="center_vertical".

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerItemStyle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ellipsize="marquee" 
    android:gravity="center_vertical" 
    android:singleLine="true" /> 

Вы можете видеть, что я использовал вашу тему с большими minHeight. Вот простой пример, чтобы использовать этот макет в адаптере:

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item, list); 
// set whatever dropdown resource you want 
spinner.setAdapter(adapter); 

я пошел с предположением, что вы хотите «CASH», «Select Product», и т.д. с фото по центру, дайте мне знать, если вы где пытаетесь делать что-то еще!

0

В вашей SpinnerAdapter попробовать что-то вроде этого:

public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     View v = super.getDropDownView(position, convertView,parent); 
     ((TextView) v).setGravity(Gravity.CENTER); 
     return v; 
} 
3

Если кто-то все еще возникают проблемы после установки gravity, попытайтесь установить отступы в Spinner:

   android:paddingTop="0dp" 
       android:paddingBottom="0dp" 
+0

Если бы я мог проголосовать за это 5 раз, я бы это сделал. Я часами сражался с Spinner, пытаясь заставить его вести себя и почитать андроид: gravity = "center_vertical" безрезультатно. Решение было таким простым.Я думаю, что причиной было неправильное поведение: я установил атрибут фона в 9 патчей. После этого Spinner настаивал на размещении текстового контента наверху. Спасибо большое за этот пост. – Mitselplik

 Смежные вопросы

  • Нет связанных вопросов^_^