我想在a的下拉列表中添加一个自定义高度Spinner,比如30dp,我想隐藏下拉列表中的分隔符Spinner.
到目前为止,我尝试实现以下样式Spinner:
<style name="spinner_style">
<item name="android:paddingLeft">0dp</item>
<item name="android:dropDownWidth">533dp</item>
<item name="android:showDividers">none</item>
<item name="android:dividerHeight">0dp</item>
<item name="android:popupBackground">@drawable/new_bg</item>
<item name="android:dropDownHeight">70dp</item>
<item name="android:scrollbarAlwaysDrawVerticalTrack">true</item>
<item name="android:dropDownSelector">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我的微调器的代码是:
<Spinner
android:id="@+id/pioedittxt5"
android:layout_width="543dp"
android:layout_height="63dp"
android:layout_toRightOf="@+id/piotxt5"
android:background="@drawable/spinner"
style="@style/spinner_style"
android:dropDownVerticalOffset="-53dp"
android:spinnerMode="dropdown"
android:drawSelectorOnTop="true"
android:entries="@array/travelreasons"
android:prompt="@string/prompt" />
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何效果.
我正在尝试制作一个完全自定义的微调器.我在按下它时弹出布局时遇到了困难.这是我的适配器的代码:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.my_array, R.layout.spinnertext);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
根据我在文档中看到的内容,布局使用了由行设置的apears:
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)
虽然每次我将其更改为我制作的新布局时,当我尝试使用微调器时,它会使应用程序失败.我试图寻找"android.R.simple_spinner_dropdown_item"的样子,以便弄清楚我是否可能遗漏任何东西.
我尝试过的所有布局都是线性或相对布局,只有textView.
如何在选择微调器时弹出自定义布局?
我在警告对话框中有一个微调器.我想减少微调器项之间的填充,因此我实现了以下内容:
spinner_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="#fff" >
<TextView
android:id="@+id/tvCust"
android:layout_width="200dp"
android:layout_height="30dp"
android:gravity="left|center_vertical"
android:textColor="#000"
android:textSize="15sp" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignParentRight="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
活动代码包含以下内容
spinner= (Spinner) dialog.findViewById(R.id.spinner);
String arr[] = { "1", "2", "3" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
CameraActivity.this, R.layout.spinner_row, R.id.tvCust,arr);
spinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
现在您可以在下面的屏幕截图中看到,单选按钮显示在微调器上,实际上是旋转器的一部分spinner_row.xml.请注意,textview宽度为200dp,而微调器的长度仅为130dp,因此不应在微调器上显示单选按钮.我该如何删除它?
此外,当我单击任何微调器项时,微调器弹出窗口不会按预期消失.(注意在微调器项目列表中检查所有3个复选框).setOnItemSelectedListener未点击项目点击.
任何帮助赞赏.

根据farrukh的建议,我尝试了他的代码,结果如下.

我正在尝试制作一个具有分隔符的ActionBar微调器.我实现了一个SpinnerAdapter有2个项目视图类型(感谢getViewTypeCount).问题是我convertViews从另一种类型发送了一些.
这是我的SpinnerAdapter:
public abstract class SeparatorSpinnerAdapter implements SpinnerAdapter {
Context mContext;
List<Object> mData;
int mSeparatorLayoutResId, mActionBarItemLayoutResId, mDropDownItemLayoutResId, mTextViewResId;
public static class SpinnerSeparator {
public int separatorTextResId;
public SpinnerSeparator(final int resId) {
separatorTextResId = resId;
}
}
public abstract String getText(int position);
public SeparatorSpinnerAdapter(final Context ctx, final List<Object> data, final int separatorLayoutResId, final int actionBarItemLayoutResId,
final int dropDownItemLayoutResId, final int textViewResId) {
mContext = ctx;
mData = data;
mSeparatorLayoutResId = separatorLayoutResId;
mActionBarItemLayoutResId = actionBarItemLayoutResId;
mDropDownItemLayoutResId …Run Code Online (Sandbox Code Playgroud)