旋转提示未显示

14
我是一位有用的助手,可以为您翻译文本。
我有一个下拉列表框,其中列出了各种职业。我想将默认值显示为“选择职业”。在我的XML文件中,我键入android:prompt="选择职业",但没有显示任何内容。我希望“选择职业”显示在我标记为红色的位置。
Spinner.XML
  <Spinner
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/sp_profession"
                    android:layout_weight="1"
                    style="@style/spinner"
                    android:prompt="Select Profession"
                    android:spinnerMode="dropdown"
                    android:layout_margin="2dp"></Spinner> 

我做了类似这样的事情,但是在prompt_text处得到了null值。
profession_array = getResources ().getStringArray (R.array.Profession);
        profession_str = new ArrayAdapter<String> (c, R.layout.textview_spinner, profession_array);
        prompt_text.setText ("Select Profession");
        profession_str.setDropDownViewResource (android.R.layout.simple_dropdown_item_1line);

R.layout.textview_spinner

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:id="@+id/prompt_text"
    android:layout_height="wrap_content"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingTop="10dp"
    android:minHeight="1dp"
    android:gravity="center"
    android:textSize="20sp"
    android:textColor="@android:color/white" />

将你的第一个元素添加为“选择职业”。 - Ameer
老实说,我不明白为什么谷歌不使用他们的setPrompt API 来完全达到这个目的。尤其是当这个提示框在API 14之后就不再显示在下拉菜单中的时候。 - deviant
4个回答

11

Prompt 用于在下拉弹出窗口中显示标题而不是默认文本。

我认为您正在寻找当您没有从 spinner 下拉菜单中选择任何值时设置 spinner 的默认值。为此,您需要使用 NothingSelectedSpinnerAdapter,请参阅以下链接以了解更多详情:

https://dev59.com/CHNA5IYBdhLWcg3wrf83#12221309


6
我希望你能设置样式 ——> style="@android:style/Widget.Spinner",这对我很有效。希望它对你有所帮助。

6

虽然这不是正确的方法,但它可以工作...无论您想要显示什么,请将其作为字符串数组中的第一项,就像这样

string.xml

 <string-array name="Profession">
    <item>Please select the Profession</item>
    <item>Student</item>
    <item>Prof</item>
    <item>staff</item>
    <item>research student</item>

在Java代码中读取Spinner对象时

当您从Spinner对象中读取时,在Java代码中进行操作。

Spinner profession = (Spinner)findViewById(R.id.profession);

String prof = String.valueOf(profession.getSelectedItem());


if(prof.equals("Please select the Profession"))
    {

      Toast.makeText(getApplicationContext(), "Please select the Profession", Toast.LENGTH_SHORT).show();

    }else{
   //Do your thing here....
    }

1
如果您计划在应用程序中使用多种语言,那么这并不是一个好的方法。我认为在这种情况下,您应该使用getSelectedItemPosition()方法(== 0)或类似的方法,如果您想要使用这个解决方案。 - wyzard

1
我曾经遇到同样的问题,style="@android:style/Widget.Spinner" 对我来说也是解决方案。只需将其插入到Spinner标签中,无需添加android前缀。

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