旋转进度条类似于对话框的显示方式

6
我正在使用spinner,它会像对话框一样打开。我需要spinner像下拉菜单一样打开。
这是XML文件:
 <Spinner
 android:id="@+id/sp_countrycode_issue_coupon"
 android:layout_width="60dp"
 android:layout_height="40dp"
 android:layout_gravity="center"
 android:layout_marginLeft="3dp"
 android:layout_weight="1"
 android:background="@drawable/img_small_box_green"
 android:dropDownSelector="@drawable/img_small_box_green"
 android:gravity="right|center"
 android:textAlignment="center" />

这里是代码。
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.country_code,
            android.R.layout.simple_spinner_item);

adapter.setDropDownViewResource(R.layout.spinner_textview);
sp_country_code.setAdapter(adapter);

我在下面发布了我的视图和旋转器显示视图的图片。但是我需要旋转器显示成第三个图片的形式。

你正在测试哪个 Android 版本? - Nirali
目前是Android 4.1。但是相同的事情也会在2.3及以下版本上显示。 - Kartheek Sarabu
4个回答

4

你所展示的信息下拉旋转器(图3)适用于版本3.0及以上。对于先前的版本,如2.2和2.3,它将像对话框一样打开。在2.3以上版本中,它将自动显示下拉列表。

如果选择Android 4.0或更高版本,则会自动添加样式。

<!--
    Base application theme for API 14+. This theme completely replaces
    AppBaseTheme from BOTH res/values/styles.xml and
    res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.DeviceDefault.Light.DarkActionBar">
    <!-- API 14 theme customizations can go here. -->
</style>    

在此输入图片描述

参考代码

    severitySpinner = (Spinner) findViewById(R.id.spinnerSeverity);
    severityAdapter = ArrayAdapter.createFromResource(this,
            R.array.severity_arrays, android.R.layout.simple_spinner_item);
    severityAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    severitySpinner.setAdapter(severityAdapter);

编辑

<application
        android:icon="@drawable/appicon"
        android:label="Test"
        android:theme="@style/AppTheme" >

之前我的主题设置为android:Theme.Light,现在我将其更改为android:Theme.DeviceDefault.Light.DarkActionBar,但我感觉没有什么区别,唯一的区别是下拉菜单中可以看到单选按钮。目前我正在使用Android 4.1。 - Kartheek Sarabu
1
你在清单文件里写了这一行吗?请看我在答案中的编辑——android:theme="@style/AppTheme" - Nirali
是的,我忘记在清单文件中进行更改了,非常感谢。 - Kartheek Sarabu

4
迟到了但可能对其他人有用,你可以简单地将spinnerMode设置为dropdown:
android:spinnerMode="dropdown"

否则,如果您决定想要改变并在将来需要对话框,只需将模式更改为对话框!

不是真的,兄弟。spinnermode 只在 API 等级 11 及以上版本中有效。 - Shabbir Dhangot

2

在清单文件中将主题更改为android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen",并在XML文件中为下拉列表设置样式style="@style/MyDropDownNav",在样式文件中添加样式。

<!-- style the list navigation -->
<style name="MyDropDownNav" parent="android:style/Widget.Holo.Light.Spinner">
    <item name="android:popupBackground">@drawable/bg_popup</item>
    <item name="android:dropDownSelector">@drawable/top_layout</item>
</style>

它正在下拉菜单中显示,但如何摆脱单选按钮。 - Kartheek Sarabu
我已经成功获取了下拉列表,但是如何移除列表项上的单选按钮呢? - Kartheek Sarabu

0

只需像这样更改代码:

ArrayAdapter<String> spinnerMenu = new ArrayAdapter<String>(
                    RegisterActivity.this, R.layout.spinner_item, list);
            // TODO Auto-generated method stub
            spinnerMenu
                    .setDropDownViewResource(android.R.layout.simple_list_item_single_choice);

            country.setAdapter(spinnerMenu);
            country.getSelectedItemPosition();

它显示为“R.layout.spinner_textview”,而不是“R.layout.spinner_item”。 - Kartheek Sarabu
但是我已经为自定义微调器文本做好了准备...所以你只需要把你的xml文件放进去就可以了...什么都不用做,就可以得到一个合适的下拉菜单。 - Shani Goriwal

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