我想在用户选择微调器值时捕获onClick事件.
我已经尝试实现OnClickListener并使用以下代码:
@Override
public void onClick(final View view) {
if (view == countrySpinner) {
Toast.makeText(this, "Override OK!", 3);
}
}
Run Code Online (Sandbox Code Playgroud)
和绑定:
countrySpinner.setOnClickListener(this);
Run Code Online (Sandbox Code Playgroud)
这编译,但我得到RuntimeException建议我使用OnItemClickListener而不是OnClickListener一个AdapterView.
如何捕获onClick事件?
正如我过去常常填充Spinner一样,我通常使用SpinnerAdapter然后通常在资源中有项目来填充它.
我目前有一个不同的查询,我在我的代码中有一个int的用户输入,我希望我的微调器填充数字到用户选择的数字.因此,如果用户输入数字"5",则将其保存为int变量.然后我希望Spinner显示1,2,3,4,5作为选择.
我真的不确定如何处理这个问题.
谢谢,奥利
我正在使用微调器并想添加微调器 - 改变行为取决于状态(聚焦,按下)
示例项目在这里https://github.com/vovs/spinner_issue
我的代码:
activity_main.xml中
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:spinnerMode="dropdown"
android:dropDownSelector="@drawable/spinner_state" />
Run Code Online (Sandbox Code Playgroud)
spinner_state.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@color/black" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@color/red" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@color/red" />
<item
android:state_enabled="true"
android:drawable="@color/gray" />
</selector>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
Run Code Online (Sandbox Code Playgroud)
所以,如果我在模拟器Android 4.0.2 API 14中运行app并尝试选择一些项目或使用鼠标滚轮滚动没有任何效果,我在选择器中设置(当按下或滚动时 - 项目应该是红色的,但它是蓝色 - ICS颜色的默认值).
对于Android 2.2 API 8,当使用滚轮按下或滚动时(在这种情况下状态为聚焦)颜色为黄色[橙色](Android 2.2的默认颜色)
如何为微调器启用选择器?

我想在WheelHorizontalView(包含在库中android-spinnerwheel)中设置单独的选项卡宽度和高度.并将该选项卡设置为支持选定/按下状态的drawable.
这可以在ViewPagerIndicator(with vpiTabPageIndicatorStyle)中完成,但我不能使用这个库.(这就是我用它做的vpiTabPageIndicatorStyle:http://pastebin.com/wB4vGMyJ)
我试过的是改变selectionDivider这个drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/drawable_daychooser_item_pressed" />
<item android:state_selected="true" android:drawable="@drawable/drawable_daychooser_item_selected" />
<item android:drawable="@drawable/drawable_daychooser_item_default" />
</selector>
Run Code Online (Sandbox Code Playgroud)
但那不起作用.我已经调查了wheel__attrs.xml但是我找不到另一个格式为drawable(引用)的属性.
这就是现在的情况:

这就是我想要的:

如果你想知道为什么我从这里切换ViewPagerIndicator到android-spinnerwheel这里:ViewPagerIndicator - 将TabPageIndicator设置为中心
我也在android-spinnerwheelGitHub页面上问过这个问题,但是经过4个月没有任何回复我决定在这里问一下.
我创建了一个有三个项目的微调器
日常
每周
每月一次
我在我的java文件中做了以下内容:
navSpinner = new ArrayList<SpinnerNavItem>();
navSpinner.add(new SpinnerNavItem(getResources().getString(R.string.dailyview)));
navSpinner.add(new SpinnerNavItem(getResources().getString(R.string.weekview)));
navSpinner.add(new SpinnerNavItem(getResources().getString(R.string.monthview)));
adapter = new TitleNavigationAdapter(getActivity().getApplicationContext(), navSpinner);
mSpinner = (Spinner) rootView.findViewById(R.id.spinner);
mSpinner.setAdapter(adapter);
mSpinner.setOnItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)
OnItemSelected方法(Implements AdapterView.OnItemSelectedListener)
public void onItemSelected(AdapterView<?> parentView, View v, int position, long id) {
Log.e("Position", "= " + position);
if (mNaviFirstHit)
{
mNaviFirstHit = false;
}
else
{
Fragment fragment = null;
switch (position) {
case 0:
Log.e("Week", "= " + position);
break;
case 1:
backspace = 1;
Log.e("Week", "= " + position);
break;
case …Run Code Online (Sandbox Code Playgroud) 我希望旋转器下拉菜单在旋转器本身正下方打开.例如:

如何设置微调器下拉的位置?
我正在尝试包装ActionBar导航微调器的文本内容(我正在使用ActionBar Sherlock).似乎我的微调器占用了下拉列表中包含的项目的宽度.
如何使微调器中的选定项目根据其宽度"包裹"?可以在GMaps动作条旋转器中找到一个示例.
android spinner android-layout android-spinner actionbarsherlock
问题是Spinner下拉列表从Spinner的顶行开始,但它应该从底线开始Spinner
正常状态
点击后
Spinner xml代码
<Spinner
android:id="@+id/spnSelectLanguage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_marginTop="16dp"
android:spinnerMode="dropdown"
android:background="@drawable/spn_lang_dropdown_selector"
android:gravity="center_vertical"
android:popupBackground="#EAEAEA"
android:textColor="#54a4db" />
Run Code Online (Sandbox Code Playgroud)
码
Spinner spnSelectLanguage = (Spinner)rootView.findViewById(R.id.spnSelectLanguage);
ArrayAdapter<String> adapterLanguage= new ArrayAdapter<String> (context,R.layout.layout_lng_spinner_item,new String[]{"English","Arabic"});
adapterLanguage.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnSelectLanguage.setAdapter(adapterLanguage);
Run Code Online (Sandbox Code Playgroud)
Style.xml
<style name="SpinnerStyle" parent="android:style/Widget.ListView.DropDown">
<item name="android:divider">@color/grey</item>
<item name="android:dividerHeight">1dp</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我对TextInputLayout和Spinner有一个对齐问题,我希望Spinner下划线与TextInputLayout内的EditText下划线对齐.这就是我正在做的事情:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="bottom">
<android.support.design.widget.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<EditText
android:id="@+id/txt_discipline_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/lbl_input_discipline_code"/>
</android.support.design.widget.TextInputLayout>
<Spinner
android:id="@+id/spnnr_color_discipline_register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Spinner.Underlined">
</Spinner>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
但是Spinner 有点低于.有人可以帮帮我吗?提前致谢.
编辑:
我达到此对齐设置Spinner layout_marginBottom为1.5dp:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="bottom">
<android.support.design.widget.TextInputLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<EditText
android:id="@+id/txt_discipline_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Code"/>
</android.support.design.widget.TextInputLayout>
<Spinner
android:id="@+id/spnnr_color_discipline_register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Spinner.Underlined"
android:layout_marginBottom="1.5dp">
</Spinner>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
但我担心这在其他设备上不能正常工作,尺寸不同.这是唯一的解决方案吗?
android android-layout android-spinner android-textinputlayout
Jetpack Compose 中是否有针对诸如 Spinner/Wheel Picker 或 Dropdown Button 之类的视觉组件的标准实现?
android android-spinner android-jetpack-compose android-compose-dropdownmenu