我在android应用程序中使用自定义spinner
适配器用于颜色spinner
。下拉工作正常。但是一旦我从微调器中选择了一个颜色(项目),它就不可选择了。此外,我不需要显示所选项目。我只想识别所选颜色而不显示它。
以下是 CustomSpinnerAdapter:
的代码@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView rowView=null;
if(convertView == null){
convertView=inflater.inflate(R.layout.spinner_layout, null);
}
rowView=(TextView) convertView.findViewById(R.id.spinnerColorview);
rowView.setBackgroundColor(Color.parseColor(itemList.get(position)));
return convertView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView rowView=null;
if(convertView == null){
convertView=inflater.inflate(R.layout.spinner_layout, null);
}
rowView=(TextView) convertView.findViewById(R.id.spinnerColorview);
rowView.setBackgroundColor(Color.parseColor(itemList.get(position)));
return convertView;
}
EDIT:
更多信息
我在spinner中的下拉列表无法选择。当我点击微调器时,它显示列表。但是当我从该列表中选择一个项目时,没有任何反应。我无法识别所选项目。
当我在getView(int position, View convertView, ViewGroup parent)
方法中打印位置时,它会打印所有项目ID。
我只需要识别所选项目,我不需要像通常那样在旋转器的顶部显示它。这是我的spinner_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="40dp"
android:clickable="true"
android:orientation="horizontal"
android:paddingLeft="40dp"
tools:context=".MainActivity" >
<TextView
android:id="@+id/spinnerColorview"
android:layout_width="200px"
android:layout_height="50px"
android:clickable="true"
android:gravity="center_vertical"
>
</TextView>
</LinearLayout>
答案 0 :(得分:13)
您需要在自定义android:descendantFocusability="blocksDescendants"
的布局文件中添加Spinner
,或在每个视图中添加android:focusable="false"
。如果自定义Spinner
中的任何视图具有focusable
视图,则onitemclick
不起作用。
答案 1 :(得分:0)
我在文本视图中添加了style="?android:attr/spinnerItemStyle"
,但它确实有效。不确定最佳解决方案,但它是一个开始和快速解决方案。
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerItemStyle"
android:id="@+id/TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:ellipsize="end"
android:gravity="left|center"
android:singleLine="true"
android:text="Option One"
android:textColor="@color/Petrol"
android:textSize="@dimen/font_size_big"
android:textStyle="bold"/>