Android Spinner的dropDownHorizontalOffset属性无法正常工作,但dropDownVerticleOffest属性可以。

12
最近我一直在研究Android Spinner控件,但遇到了一个小问题。我需要将下拉框的左侧与主Spinner控件的极左对齐。我尝试使用dropDownHorizontalOffset来对齐它们,但是无论我使用什么值,下拉菜单的水平位置都不会改变,但是当我测试dropDownVerticleOffset时,下拉菜单的垂直位置确实发生了变化。有没有人熟悉这些值或者有任何其他想法可以使它们对齐呢?谢谢!

1
有一个 bug:https://code.google.com/p/android/issues/detail?id=70754 - Denys Kniazhev-Support Ukraine
你有找到解决这个问题的方法吗?虽然该缺陷报告已被标记为过时,但我刚刚遇到了这个问题。太神奇了 :) - Evren Yurtesen
5个回答

4
解决方案:我尝试了建议的填充更改,而不是dropDownHorizontalOffset,它确实起作用了,问题在于它也改变了主要spinner对象中文本的位置,使它看起来不太好。因此,该方法虽然有效,但不理想。
问题在于我们的应用程序使用的是早于4.1版本的整体主题(theme.NoTitleBar),而那个旧主题不支持dropDownHorizontalOffset,因为当时一般的spinners并没有得到完全支持。我将其更改为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


-4

尝试使用android:paddingLeft代替dropDownHorizontalOffset


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接