Android 微调器下拉箭头未显示
Android Spinner Dropdown arrow not displaying
我的片段背景是白色的,除非我点击它,否则微调器的箭头不会显示。
这是我的 Java 文件中的片段:
spinner = (Spinner)v.findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.accounts,R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_items);
spinner.setAdapter(adapter);
spinner.setPrompt("Select an account");
这是我的 spinner_item
的 XML
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"
android:textSize="16dp"
android:background="#FFFFFFFF"
android:textColor="#ff252525"/>
这是我 spinner_dropdown_items 的布局。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"
android:textSize="16dp"
android:background="#FFFFFFFF"
android:textColor="#ff252525"/>
这是我的微调器在我的片段中带有白色背景的样子:
White Colour Background - Spinner
这就是我将背景颜色更改为紫色时的样子:
Purple background - Spinner
最简单的方法是设置背景图像(带箭头)而不是颜色。
spinner.setBackgroundResource(R.drawable.spinner_img);
希望对您有所帮助。
试试这个:
<Spinner
android:id="@+id/spinnPhoneTypes"
android:layout_width="0dp"
style="@android:style/Widget.Spinner.DropDown"
android:layout_height="@dimen/thirtyFive"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:background="@drawable/shape_drop_down_normal"
android:gravity="center_vertical" />
shape_drop_down_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#6f94c7" />
<padding
android:bottom="10dp"
android:left="2dp"
android:right="10dp"
android:top="10dp" />
</shape>
</item>
<item>
<bitmap
android:gravity="end"
android:src="@drawable/drop_arrow" />
</item>
</layer-list>
这对我有用,也简单得多:
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Light"
android:spinnerMode="dropdown" />
并且在您的 class 文件中:
spinner = (Spinner) view.findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
希望对您有所帮助 ;)
只需在 Spinner
标签中添加主题即可。
android:theme="@style/ThemeOverlay.AppCompat.Light"
检查你是否为你的 Spinner
提供背景,如果你删除它,它将解决问题
为避免使用可绘制对象,将微调器包裹在视图中并为包裹视图设置背景颜色。例如,
<android.support.v7.widget.CardView
android:id="@+id/cardView_spinner"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="32dp"
android:background="@color/white">
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v7.widget.CardView>
删除微调器的背景颜色,例如您设置了白色背景,不会显示下拉图标
这对我也有效如果您使用 Material 组件作为主题,
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Theme.MaterialComponents.Light"
android:spinnerMode="dropdown" />
在您的代码中:
spinner = (Spinner) view.findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@drawable/edit_bg">
<androidx.appcompat.widget.AppCompatSpinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/railayregular"
app:adapter="@{adapter}"
android:onItemSelected="@{click::click}"
android:textColor="@color/black"
android:spinnerMode="dropdown"
android:theme="@style/Theme.AppCompat.Light"
android:textColorHint="@color/black" />
</RelativeLayout>
我的片段背景是白色的,除非我点击它,否则微调器的箭头不会显示。
这是我的 Java 文件中的片段:
spinner = (Spinner)v.findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.accounts,R.layout.spinner_item);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_items);
spinner.setAdapter(adapter);
spinner.setPrompt("Select an account");
这是我的 spinner_item
的 XML<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"
android:textSize="16dp"
android:background="#FFFFFFFF"
android:textColor="#ff252525"/>
这是我 spinner_dropdown_items 的布局。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"
android:textSize="16dp"
android:background="#FFFFFFFF"
android:textColor="#ff252525"/>
这是我的微调器在我的片段中带有白色背景的样子: White Colour Background - Spinner 这就是我将背景颜色更改为紫色时的样子: Purple background - Spinner
最简单的方法是设置背景图像(带箭头)而不是颜色。
spinner.setBackgroundResource(R.drawable.spinner_img);
希望对您有所帮助。
试试这个:
<Spinner
android:id="@+id/spinnPhoneTypes"
android:layout_width="0dp"
style="@android:style/Widget.Spinner.DropDown"
android:layout_height="@dimen/thirtyFive"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:background="@drawable/shape_drop_down_normal"
android:gravity="center_vertical" />
shape_drop_down_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="#6f94c7" />
<padding
android:bottom="10dp"
android:left="2dp"
android:right="10dp"
android:top="10dp" />
</shape>
</item>
<item>
<bitmap
android:gravity="end"
android:src="@drawable/drop_arrow" />
</item>
</layer-list>
这对我有用,也简单得多:
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Light"
android:spinnerMode="dropdown" />
并且在您的 class 文件中:
spinner = (Spinner) view.findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
希望对您有所帮助 ;)
只需在 Spinner
标签中添加主题即可。
android:theme="@style/ThemeOverlay.AppCompat.Light"
检查你是否为你的 Spinner
提供背景,如果你删除它,它将解决问题
为避免使用可绘制对象,将微调器包裹在视图中并为包裹视图设置背景颜色。例如,
<android.support.v7.widget.CardView
android:id="@+id/cardView_spinner"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="32dp"
android:background="@color/white">
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v7.widget.CardView>
删除微调器的背景颜色,例如您设置了白色背景,不会显示下拉图标
这对我也有效如果您使用 Material 组件作为主题,
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Theme.MaterialComponents.Light"
android:spinnerMode="dropdown" />
在您的代码中:
spinner = (Spinner) view.findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@drawable/edit_bg">
<androidx.appcompat.widget.AppCompatSpinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/railayregular"
app:adapter="@{adapter}"
android:onItemSelected="@{click::click}"
android:textColor="@color/black"
android:spinnerMode="dropdown"
android:theme="@style/Theme.AppCompat.Light"
android:textColorHint="@color/black" />
</RelativeLayout>