更改Spinner下拉列表的位置

12

我需要改变Spinner下拉列表的水平位置。

这是屏幕截图:

enter image description here

我希望下拉列表在主要图标/文本下方一行显示,这样它看起来更好看。

就像图片上那样:

enter image description here

这是我在xml中做的:

<Spinner
    android:id="@+id/tvHeader"
    style="@style/spinner_style"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/ver_main_donate_background_tile_long"
    android:layout_alignTop="@+id/ver_main_donate_background_tile_long"
    android:layout_marginTop="5dp"
    android:layout_toRightOf="@+id/icon_main_header"
    android:spinnerMode="dropdown"
    android:dropDownHorizontalOffset="-15dp"
    android:gravity="left|center_vertical"

    android:text="@string/name_of_product" />

所以,我想,

android:spinnerMode="dropdown"
android:dropDownHorizontalOffset="-15dp"

这个应该能解决问题,但正如您在屏幕截图上看到的那样,它并没有生效。


不要在宽度上使用wrap_content。 - Omatt
你解决了这个问题吗? - Anubian Noob
我好像不明白你想要改变什么,@AnubianNoob。 - Elltz
下拉菜单与第一张图片中的旋转器不对齐。我也遇到了同样的问题。将水平偏移设置为负数似乎不能解决问题,下拉菜单无法向左移动更远。 - Anubian Noob
3个回答

6

在此输入图片描述

您可以观察到列表项略微向右对齐,这是由于其父元素引起的, 因此我在旋转器视图中添加了marginLeft属性。

android:layout_marginLeft="20dp"

我曾尝试过这种方法,以下是效果对比:

enter image description here


如果我不想移动下拉框怎么办?有没有一种方法可以使下拉框与窗口的侧面对齐? - Anubian Noob
我觉得,没有其他办法。 - Abhishek
我有点希望能够解释一下。你知道为什么这是不可能的吗? - Anubian Noob
@AnubianNoob 即使他是对的,没有办法自定义下拉位置,除此之外,您可以通过调整父容器中的布局(例如,添加 -20dp 左边距)轻松将旋转器的位置移回原来的位置。 - csga5000
或者你可以使用自定义弹出窗口和自定义列表视图,所以任何事情都是可能的。但这是一个很大的麻烦,并且它不会自动执行像关闭旋转器这样的操作。 - csga5000

1
使用此代码将按钮制作成您想要的样式。
    getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);
    getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));   
    getSupportActionBar().setCustomView(R.layout.custom_actionbar);

这是编程布局的样式。
<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center|right"
    android:paddingBottom="3dp"
    android:paddingLeft="3dp"
    android:paddingRight="-6dp"
    android:paddingTop="3dp"
    android:src="@drawable/ic_launcher" />

<Button
    android:id="@+id/mytext"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="left|center"
    android:text="wheresmyTURF"
    android:textColor="#ffff"
    android:textSize="26sp"
    app:customTypeface="fonts/pompiere.ttf" />

通过这个,您可以自定义操作栏,以便根据需要进行一些更改。

1
你可以只制作没有三角形的Spinner。
首先,在res/values下创建styles.xml文件,打开它并添加以下内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style parent="@android:style/Widget.Spinner" 
name="SpinnerAsEditText"><item 
name="android:background">@android:drawable/edit_text</item>
</style>
</resources>

接下来,在您的布局中添加Spinner,如下所示:

<Spinner style="@style/SpinnerAsEditText" anyOtherAttributeYouNeed="..."></Spinner>

当您像这样使用它时,您的Spinner将看起来像一个没有小三角形的EditText。

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