【问题标题】:spinner shows like dialog微调器显示类似对话框
【发布时间】:2014-10-22 21:09:28
【问题描述】:

我正在使用微调器,它像对话框一样打开。我需要像下拉菜单一样打开微调器。

这是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);

我在下面发布了我的图片,就像我的视图和微调器显示视图一样。但我需要像第三张图片一样显示微调器

【问题讨论】:

  • 你测试的是哪个安卓版本?
  • 目前是安卓 4.1。但同样的东西也显示在 2.3 及以下版本

标签: android android-layout spinner


【解决方案1】:

图 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
  • 你有没有在你的 Manifest 中写下这一行。在答案中查看我的编辑---- android:theme="@style/AppTheme"
  • 是的,我忘记更改清单文件了,非常感谢
【解决方案2】:

迟到但可能对其他人有用,您可以简单地将 spinnerMode 设置为下拉:

android:spinnerMode="dropdown"

否则,如果您决定以后想要进行更改并想要对话,只需将模式更改为对话!

【讨论】:

  • 不是真的兄弟。 spinnermode 工作 API 级别 11 以上
【解决方案3】:

在清单文件中将主题更改为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>

【讨论】:

  • 它显示在下拉列表中,但如何摆脱单选按钮。
  • 我能够获得下拉菜单,但如何删除列表项上的单选按钮
【解决方案4】:

只需像这样更改代码:

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”
  • 但是我已经为自定义微调器文本制作了...所以你只是把你的 xml 文件而不是它...只是什么都没有并得到一个适当的下拉
猜你喜欢
  • 2023-03-20
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多