3

I am very new to android development and I seem to have an issue that I cannot understand. I have a spinner and the values are getting set just fine but my prompt is not appearing. I have attempted to set this in both the xml and the java code and neither one works at all. Below is my configuration. I feel that I am missing something fundamental but I don't know what it is yet.

Any help would be appreciated. Craig

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000" >

    <Spinner
        android:id="@+id/band"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="72dp"
        android:prompt="@string/year_prompt"
        android:textColor="#F0F0F0" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="28dp"
        android:entries="@array/year_array"
        android:prompt="@string/year_prompt"
        android:textColor="#F0F0F0" />

</RelativeLayout>




<string name="year_prompt">Select A Year</string>
<string-array name="year_array">
    <item >2000</item>
    <item >2001</item>
    <item >2002</item>
    <item >2003</item>
    <item >2004</item>
    <item >2005</item>
</string-array>
mornindew
  • 1,993
  • 6
  • 32
  • 54
  • What version of android are you using? In android 3.0+ I have not noticed the prompt being displayed anymore – jcw Nov 10 '12 at 22:20
  • I am currently using 4.1.2. Does that mean that the prompt functionality is deprecated? Is there a better way to accomplish the same thing. – mornindew Nov 11 '12 at 05:11

1 Answers1

4

The reason that your promoted is not showing is because in android 3.0+, there is no space for the prompt.

This is a screen shot of a spinner pre 3.0

The prompt is at the top, where is says "Chose a Country", screen shot from http://www.mkyong.com/android/android-spinner-drop-down-list-example/

enter image description here

So the prompt is no longer shown.

There are a few possibilities.

First, you could just add an item at the top of your list-array, that says the same thing as your prompt

Otherwise you could use a button and create a drop down list from that.

First, in your layout replace your spinner with a button, and give it the text that you gave your prompt

Then move your list of items on yoour spinner to a file called optionmenu.xml

Then declare your button and set up an onClickListener for it.

Inside that method, put the following code

On the foutrh line, the layout that you specify is your optionmenu layout

public void showPopup(View v) {
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.layout.optionmenu, popup.getMenu());
popup.show();

} When you call this method, you need to do the following

    View p = (View)findViewById(R.id.spinner button);
showPopup(p);

In this price of code, View p is the view at the location that you want to show the top corner of the menu. So in this case, it will be your button

See the answer here to implement it - android menu code not working

And in each case:..... statement, put a line that sets your button text as a string.

case R.id.item1:

button.setText("item1");>

There are some other good solutions here -

How to make an Android Spinner with initial text "Select One"

Community
  • 1
  • 1
jcw
  • 5,132
  • 7
  • 45
  • 54
  • Thank you very much. This was very informative and helpful. I will post my final solution. Craig – mornindew Nov 11 '12 at 16:52
  • FWIW - I attmepted the "button approach" and it worked fine. The functionality was perfect but I really didn't dig much of the UI (too much going on). I then decided to go with the first value of my list-array to have the value "Please Select...". I don't love having "fake" values in my spinner and then have to code around them (e.g. on click of a fake value) but it seems to work fine and the UI is much cleaner. thank you all. – mornindew Nov 12 '12 at 03:53
  • 1
    What you are looking for can be done using this http://stackoverflow.com/a/14546126/452487 – JaydeepW May 07 '14 at 05:55