android微调器的默认行为是最初显示微调器下拉部分顶部的第一个项目。当用户在下拉列表中选择其他项目/文本时,它将使用所选项目更新顶部的文本。
我不希望在微调器的顶部显示任何文本。 没有空头刺作为第一项,因为这留下了空白。有谁知道这是怎么做到的吗?这就是我到目前为止所拥有的
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>
这是我的问题的直观表示 - 如果你点击这个图像/ gif,它应该为我的问题设置动画。
答案 0 :(得分:1)
您可以使用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;
}
答案 1 :(得分:0)
<?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>
答案 2 :(得分:0)
您可以使用单击时显示微调器的图像。最初,微调器将被隐藏。
<?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);
}