避免在 Spinner 中显示选定的文本

Avoid showing selected text in Spinner

android 微调器的默认行为是最初在微调器下拉部分的顶部显示第一项。当用户在下拉列表中选择其他 items/text 时,它将使用所选项目更新顶部的文本。

我根本不想在微调器的顶部显示任何文本。 没有将空字符串作为第一项,因为这样会留下空白。有谁知道这是怎么做到的吗?这是我目前所拥有的


styles.xml

<resources>
    <style parent="@android:style/Widget.TextView.PopupMenu" name="SpinnerAsEditText">
        <item name="android:background">@drawable/filter_arrow</item>
    </style>
</resources>


这是我的布局:main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@color/colorAccent"
    android:layout_height="match_parent">

    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/list"
        style="@style/SpinnerAsEditText"/>
 </RelativeLayout>


这是我的问题的直观表示 - 如果您单击此 image/gif,它应该会激活我的问题。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@color/colorAccent"
    android:layout_height="match_parent">

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/list"
        style="@style/SpinnerAsEditText"/>
 </RelativeLayout>


<?xml version="1.0" encoding="utf-8"?>  
    <resources>  
     <array name="list">  
    <item></item>  
    <item>second</item>  
    <item>third</item>  
    <item>fourth</item>  
    <item>fifth</item>  
     </array>
    </resources>

您可以使用一张图片,点击该图片会显示微调器。最初微调器将被隐藏。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@color/colorAccent"
android:layout_height="match_parent">
<ImageView
    android:id="+@id/spinnerImage"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="showSpinner" />
<Spinner
    android:id="+@id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/list"
    style="@style/SpinnerAsEditText"
    android:visibility="hidden"/>

并在 Java 中:

void showSpinner() {
   findViewById(R.id.spinnerImage).setVisibility(View.GONE);
   findViewById(R.id.spinner).setVisibility(View.VISIBLE);
}

您可以使用 popUpWindow 来显示 dropDownList。

<ImageView
    android:id="+@id/spinnerImage"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="showSpinner" />

在java

findViewById(R.id.spinnerImage).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             mSortPopupWindow = popupWindow(spinnerItemList);
                    mSortPopupWindow.showAsDropDown(v, -5, 0); // This is impotent to where to show drop down   
            }
        });

 public PopupWindow popupWindow(String[] stringArray) {
        PopupWindow popupWindow = new PopupWindow(mContext);
        ListView listView = new ListView(mContext);

        listView.setAdapter(dropDownAdapter(stringArray));

        listView.setOnItemClickListener( AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(mContext, "Selected" + stringArray[position], Toast.LENGTH_SHORT).show();
            popupWindow.dismiss();
        }

    });

        popupWindow.setFocusable(true);
        popupWindow.setWidth(250);//Or you can set wrap_content
        popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

        popupWindow.setContentView(listView);

        return popupWindow;
    }