2014-02-01 3 views
7

Я недавно погрузился в мир элементов управления Android Spinner и столкнулся с небольшой проблемой. Мне нужно выровнять левую сторону капли вниз с самого дальнего левого угла главного элемента управления прядильщиком. Я попытался использовать dropDownHorizontalOffset, чтобы выровнять их, и независимо от того, какое значение я использую, горизонтальное положение выпадающего значения не изменяется, но когда я тестирую с dropDownVerticleOffset, вертикальное положение выпадающего значения изменяется.Android Spinner dropDownHorizontalOffset не работает, но dropDownVerticleOffest -

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

Спасибо!

+1

Там есть ошибка: https://code.google.com/p/android/issues/detail?id=70754 –

+0

ли вы решение этой проблемы? Отчет об ошибке отмечен как устаревший, но я столкнулся с этой проблемой. Удивительно :) –

ответ

-3

Попробуйте использовать android:paddingLeft вместо dropDownHorizontalOffset

3

Решены: я попробовал предложенное изменение обивки вместо dropDownHorizontalOffset и он сделал работу, проблема заключалась в том, что она также изменила положение текста в первичном объекте вращателя, который сделал его выглядят не так уж здорово. Таким образом, этот метод работает, но не является предпочтительным.

Проблема заключалась в том, что мы использовали общую тему до 4.1 для нашего приложения (theme.NoTitleBar), а dropDownHorizontalOffset не поддерживали эту старую тему, потому что в общем случае не поддерживались полностью поддерживающие проигрыватели. Я изменил его на Theme.Holo.Light.NoTitleBar и все получилось отлично! Я не думаю, что это слишком распространено в проблеме, но, надеюсь, это может помочь кому-то.

1

Я достиг той же цели, удалив фон всплывающего окна.

spinner.setPopupBackgroundDrawable(null); 

Этот код удалит фон, (и отступы, который приходя с ним), и, следовательно, будет позиционировать Ваш выпадающий в соответствии с блесной.

Очевидно, что вам нужно будет использовать свой собственный вариант, если вы не хотите, чтобы он был прозрачным.

1

Я думаю, что это будет работать для вас:

spinner.setPopupBackgroundDrawable(null); 
0

Я искал последний ответ на этот вопрос. В случае, если dropDownHorizontalOffset не работает, или вы не можете найти его. Есть альтернатива. Установите высоту Spinner на 0dp и установите значение marginTop для вертикального смещения и marginRight для горизонтального смещения.

В моем случае:

<Spinner 
    android:id="@+id/spinner" 
    android:background="@null" 
    android:layout_width="wrap_content" 
    android:layout_height="0dp" 
    android:layout_marginTop="40dp" 
    android:layout_marginRight="27dp" 
    android:layout_alignParentEnd="true" /> 

Preview

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