Android 如何阻止微调器自动选择选项?
我在我正在做的一个应用程序中有一个微调器,当它转到OnItemSlcted时,它会自动选择第一个选项,如何以简单的方式停止Android 如何阻止微调器自动选择选项?,android,spinner,Android,Spinner,我在我正在做的一个应用程序中有一个微调器,当它转到OnItemSlcted时,它会自动选择第一个选项,如何以简单的方式停止 spinner2.setOnItemSelectedListener(new OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> parent,
spinner2.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent,
View view,
int pos, long id) {
spinner2.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共无效项(AdapterView父项,
视图视图,
内部位置,长id){
我如何以一种简单的方式阻止这种情况
spinner2.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent,
View view,
int pos, long id) {
您没有。除非适配器为空且无法进行选择,否则
微调器始终有选择。您的应用程序需要始终通过各种方式处理选择。您可以使用布尔变量来检查它是否是第一次,不要执行代码。
第二次执行代码,否则这是默认行为。这个问题在SO和其他地方被问过很多次。例如:
一些答案和评论建议忽略(一些)回调。这适用于非常简单的用途,但它忽略了一个事实,即大多数问这个问题的人想要的是一个菜单,而不是列表模式下标准ActionBar提供的基于微调器的选项卡式导航。一些评论建议使用弹出式菜单,但我所看到的都没有提供详细信息。因此,下面是要做的:
创建将在ActionBar中显示的视图,用户将在该视图上单击以查看菜单:
View view = this.getLayoutInflater().inflate(R.layout.actionbar_view, null);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
创建定位到该视图的弹出菜单:
PopupMenu popup = new PopupMenu(this, view);
popup.getMenuInflater().inflate(R.menu.actionbar_menu, popup.getMenu());
在显示弹出菜单的视图中添加一个OnClickListener
:
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popup.show();
}
});
在弹出菜单中添加一个OnMenuItemClickListener
,以便在用户从菜单中选择时接收通知:
View view = this.getLayoutInflater().inflate(R.layout.actionbar_view, null);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();
return true;
}
});
最后,使用以下方法在活动中配置ActionBar:
ActionBar ab = this.getActionBar();
ab.setCustomView(view);
ab.setDisplayShowCustomEnabled(true);
ab.setDisplayShowTitleEnabled(false);
一条评论是,将主视图样式设置为与默认ActionBar匹配可能有点棘手。请尝试调查以下样式资源:
@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title
@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title.Inverse
@android:style/TextAppearance.Holo.Widget.ActionBar.Title
@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse
否则,您至少需要正确的颜色和文本大小(可能中等)。视图本身显然应该填充父视图
,并具有垂直中心
重力
“努夫说.这是默认行为。你还期望什么呢???这对你很有用,我以前也有同样的问题:最好使用弹出菜单而不是微调器。就像这个一样,我选择了(){if(firstTime){firstTime=false;return true;}