如何将 Android 下拉列表向右对齐

7
我正在尝试右对齐Android spinner的文本。我已经在Stack Overflow上找到并尝试了推荐的解决方案,但是它对我没有用,所以我有点困惑我做错了什么。我感觉我的布局由于我的错误没有被正确地拾取。 我的activity.xml文件:
<Spinner
android:id="@+id/spinnerStoreType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>

在res\layout目录下,我创建了一个名为simple_spinner_item.xml的文件。

<?xml version="1.0" encoding="utf-8"?>

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="40sp"
    android:textColor="#FFFFFF"
    android:padding="10dip"
    android:gravity="right"
    />

最后,在我的活动中,我将其使用如下:

spinnerStoreType = (Spinner) findViewById(R.id.spinnerStoreType);
ArrayAdapter<CharSequence> adapter =    
ArrayAdapter.createFromResource(this,
R.array.transaction_store_array, android.R.layout.simple_spinner_item);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinnerStoreType.setAdapter(adapter);

所以,我相信正在使用的simple_spinner_item是默认的Android one。我不清楚如何让它使用我的自定义项。如果它有相同的名称,我认为这应该会自动发生,但事实并非如此?

像往常一样,任何帮助都非常感激。


1
使用R.layout.simple_spinner_item.xml代替android.R.simple_spinner_item.xml来使用你自己的布局。你也可以给它取一个不同的名字,不一定要和Android中的相同。 - MoQ93
所以,使用Android时,它基本上没有使用我的布局。非常感谢您的帮助。既然您已经发表了评论,我不确定如何“接受”这个答案? - greysqrl
不用客气。您可以将H. Bhonsle的答案标记为已接受 ;) - MoQ93
3个回答

10

您可以完全使用样式来实现这一点。我认为这是最好的方法。 这是来自我的styles.xml的代码-

    <style name="AppTheme.Spinner">
        <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
        <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
    </style>

    <style name="SpinnerItem">
        <item name="android:gravity">right|center_vertical</item>
        <item name="android:paddingRight">16dp</item>
    </style>

    <style name="SpinnerDropDownItem">
        <item name="android:gravity">right|center_vertical</item>
        <item name="android:paddingRight">16dp</item>
    </style>

这是将实现应用于spinner的代码:

       <Spinner
            android:id="@+id/type"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:layout_below="@id/title"
            android:entries="@array/data"
            android:theme="@style/AppTheme.Spinner" />

嗨。谢谢。问题在于我添加了“android.”,因此访问的是Android而不是我的自定义微调器。 - greysqrl
2
那不是问题,您已经自定义了项目布局和下拉菜单布局。您可以在不触及布局XML的情况下完成操作。 - Sanjeet A
实际上那就是问题所在,现在已经被解决了。你提出的是我的实现的替代方案,而不是解决我的问题。之前的答案解决了我的问题,你的只是一种替代方法,而不是我所遇到问题的解决方案。 - greysqrl

3

android.R.layout.simple_spinner_item指的是来自android库的下拉列表项,不会包含您自定义的属性。您应该使用R.layout.simple_spinner_item引用您自己的布局。


嗨。感谢您抽出时间回答这个问题。上面来自MoQ的评论帮助我解决了这个问题,如果可能的话,我想将其标记为答案。不过,我仍然非常感谢您的帮助。谢谢。 - greysqrl

0
如果您想使用 android.R.layout.simple_spinner_item 作为下拉菜单项,可以在您的Java代码中添加 spinnerStoreType.setGravity(Gravity.RIGHT) 来进行右对齐。因此,您的代码可以像这样编写:
spinnerStoreType = (Spinner) findViewById(R.id.spinnerStoreType);
spinnerStoreType.setGravity(Gravity.RIGHT);   
ArrayAdapter<CharSequence> adapter =    
ArrayAdapter.createFromResource(this,
R.array.transaction_store_array, android.R.layout.simple_spinner_item);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
spinnerStoreType.setAdapter(adapter);

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