Android 如何在微调器和每个项目之间设置分隔符?
我正在寻找一些解决方案,并试图完成它。分隔器仍然没有显示出来 我已在styles.xml中为我的主题设置了样式:Android 如何在微调器和每个项目之间设置分隔符?,android,android-spinner,Android,Android Spinner,我正在寻找一些解决方案,并试图完成它。分隔器仍然没有显示出来 我已在styles.xml中为我的主题设置了样式: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Others theme here. --> <item name="android:dropDownListViewStyle">@style/mySpinnerStyle</ite
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Others theme here. -->
<item name="android:dropDownListViewStyle">@style/mySpinnerStyle</item>
</style>
@风格
这是我的风格
<style name="mySpinnerStyle" parent="android:Widget.ListView.DropDown">
<item name="android:divider">#00ff00</item>
<item name="android:dividerHeight">1dp</item>
</style>
#00ff00
1dp
以下是我的spinner片段代码:
Spinner chooseDate = (Spinner) view.findViewById(R.id.chooseDate);
String[] date_group = dateList.toArray(new String[dateList.size()]);
ArrayAdapter<String> itemDate = new ArrayAdapter<String>(getActivity(), R.layout.spinner, date_group);
itemDate.setDropDownViewResource(R.layout.spinner);
chooseDate.setAdapter(itemDate);
Spinner choostate=(Spinner)view.findviewbyd(R.id.choostate);
String[]date_group=dateList.toArray(新字符串[dateList.size()]);
ArrayAdapter itemDate=新的ArrayAdapter(getActivity(),R.layout.spinner,日期组);
setDropDownViewResource(R.layout.spinner);
选择setAdapter(itemDate);
以下是我的微调器布局xml:
<Spinner
android:theme="@style/mySpinnerStyle"
android:spinnerMode="dialog"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:layout_marginRight="16dp"
android:id="@+id/chooseDate"
android:layout_width="match_parent"
android:layout_height="38dp"
android:background="@drawable/spinner_arrow" />
然后R.layout.spinner xml如下所示:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:textSize="22dp"
android:theme="@style/mySpinnerStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:gravity="center"
android:paddingRight="40dp"
android:singleLine="true" />
我点击我的微调器,显示这样的对话框,最后没有分隔符。。。
我已经为我的旋转器设置了样式,但我不能显示分隔器。我不知道为什么
任何帮助都将不胜感激。谢谢你的建议
清单使用我的AppTheme:
<application
android:allowBackup="true"
android:icon="@drawable/app_icon_512x512"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name="android.support.multidex.MultiDexApplication">
这可能会帮助您
活动\u main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
tools:context=".MainActivity"
android:background="#effbe4"
>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/spinner_item_border"
/>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#ff2632"/>
</shape>
</item>
<item android:bottom="2dp">
<shape android:shape="rectangle">
<solid android:color="#d7ffa2"/>
</shape>
</item>
</layer-list>
spinner\u item.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
tools:context=".MainActivity"
android:background="#effbe4"
>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/spinner_item_border"
/>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#ff2632"/>
</shape>
</item>
<item android:bottom="2dp">
<shape android:shape="rectangle">
<solid android:color="#d7ffa2"/>
</shape>
</item>
</layer-list>
spinner\u item\u border.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
tools:context=".MainActivity"
android:background="#effbe4"
>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/spinner_item_border"
/>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#ff2632"/>
</shape>
</item>
<item android:bottom="2dp">
<shape android:shape="rectangle">
<solid android:color="#d7ffa2"/>
</shape>
</item>
</layer-list>
活动中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get reference of widgets from XML layout
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Initializing a String Array
String[] plants = new String[]{
"Black birch",
"Bolean birch",
"Canoe birch",
"Cherry birch",
"European weeping birch"
};
// Initializing an ArrayAdapter
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
this,R.layout.spinner_item,plants
);
spinnerArrayAdapter.setDropDownViewResource(R.layout.spinner_item);
spinner.setAdapter(spinnerArrayAdapter);
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//从XML布局获取小部件的引用
微调器微调器=(微调器)findViewById(R.id.Spinner);
//初始化字符串数组
字符串[]植物=新字符串[]{
“黑桦树”,
“伯林桦树”,
“独木舟桦树”,
“樱桃桦树”,
“欧洲落叶松”
};
//初始化ArrayAdapter
ArrayAdapter SpinnerayAdapter=新的ArrayAdapter(
这个,右布局,微调器,植物
);
spinnerrayadapter.setDropDownViewResource(R.layout.spinner_项);
spinner.setAdapter(SpinNearrayaAdapter);
}
}
从您的文本视图中删除android:theme=“@style/mySpinnerStyle”
(R.layout.spinner xml)
并从微调器更改此值
android:spinnerMode="dialog"
使用此值
android:spinnerMode="dropdown"
将分隔符显示为微调器项需要将两个属性设置为线性布局
1. 除法器和显示除法器检查下面的代码
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="?android:attr/listDivider"
android:showDividers="end"
android:orientation="vertical">
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/dp5"
android:textColor="#6F6F6F"
android:textAllCaps="false"
android:layout_marginStart="@dimen/dp5"
android:layout_marginLeft="@dimen/dp5" />
</LinearLayout>
您是否尝试删除微调器的背景?是的,它不起作用。背景设置只是更改了我的微调器边框。你的活动是否在清单文件中使用了你的“AppTheme”?是的,我的清单使用了这个android:theme=“@style/AppTheme”
,就像我的问题更新了一样。是的,这是我试图记住的。很酷,老兄回答得很好+1谢谢。我终于出来了。但在我的例子中,我可以为spinner设置一个对话框吗?样式设置android:Widget.ListView.DropDown
我找不到对话框。谢谢。另一种方法是为spinner_item.xml设置背景。我甚至找不到!再次感谢你。好的,祝你快乐!谢谢你的分享。它工作得很好。谢谢分享。