android:提示被忽略

时间:2012-05-06 16:15:25

标签: android layout spinner prompt

我有一个Spinner,但会忽略提示信息。我找不到原因。

我的布局:

<Spinner
       android:id="@+id/spinner"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_marginBottom="15dp"
       android:prompt="@string/age"
       android:drawSelectorOnTop="true"
       android:background="@drawable/spinner_bg" />

我的代码:

spinner = (Spinner) findViewById(R.id.spinner);
    SpinnerAdapter adapter = new SpinnerAdapter(this, R.layout.spinner_item, getApplicationContext().getResources().getStringArray(R.array.spinnerArray));
    spinner.setAdapter(adapter);
    adapter.setDropDownViewResource(R.layout.spinner_item);

SpinnerAdapter:

public class SpinnerAdapter extends ArrayAdapter<String>{

public SpinnerAdapter(Context context, int textViewResourceId,
        String[] objects) {
    super(context, textViewResourceId, objects);
}


public View getView(int position, View convertView, ViewGroup parent) {
    View v = super.getView(position, convertView, parent);

    Typeface externalFont=Typeface.createFromAsset(getContext().getAssets(), "fonts/PermanentMarker.ttf");
    ((TextView) v).setTypeface(externalFont);

    return v;
}


public View getDropDownView(int position,  View convertView,  ViewGroup parent) {
    View v =super.getDropDownView(position, convertView, parent);

    Typeface externalFont=Typeface.createFromAsset(getContext().getAssets(), "fonts/PermanentMarker.ttf");
    ((TextView) v).setTypeface(externalFont);

    return v;
}

}

spinner_item的布局:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="38dp"
android:ellipsize="marquee"
android:gravity="center_vertical|left"
android:minHeight="38dp"
android:paddingLeft="5dp"
android:singleLine="true"
android:textSize="18sp" />

你有什么想法吗?

1 个答案:

答案 0 :(得分:3)

认为你误解了android:提示符...它没有在关闭的微调器中设置文本,它设置了开放微调器的标题/标题。

Closed spinner:     Spinner Item 1

Open Spinner:       Android Spinner Prompt
                    ----------------------
                    Spinner Item 1
                    Spinner Item 2

有几种方法可以将提示放在关闭的微调器显示中。一种方法是插入将在第一个位置加载到您的微调器中的虚拟数据,然后让您的监听器忽略它,如果它被选中(我不喜欢这个,因为它将垃圾放入您的数据存储中)。

另一种选择是创建一个自定义微调器适配器来将提示符作为微调器的第一个条目插入(我喜欢这个,因为它会在代码中保留提示并保持数据应该是...数据)。

希望这有帮助!祝你好运!