我已经使用带有OnItemSelectedListeners的微调器在android 2.2(api8)下成功运行了一个应用程序。它是用tarketSdkVersion = 8和minSdkVersion = 8构建的。我现在试图在3.2设备上运行它,但是无法选择微调器。但它们会使用默认数组值填充,因此适配器似乎正在工作。点击旋转器会导致无反应。我尝试使用tarketSdkVersion = 13和minSdkVersion = 13构建,但是旋转器仍然死了。我使用稍微定制的微调器版本来在multiline_spinner_dropdown_item.xml文件中实现“wrap_content”。自2.2以来,旋转器是否存在兼容性问题?
答案 0 :(得分:2)
我尝试了.setEnabled(true),但它没有用。令人沮丧的是,我开始从main.java和layout.xml中删除代码段,直到一个微调器离开并正常工作。当我添加代码和控件时,我发现位于TabHost / LinearLayout / TabWidget / FrameLayout内的ScrollView阻止了Spinners的响应。通过删除Scrollview,Spinners在3.2中工作。出于某种原因,Scrollview工作在2.2,但不是3.2。
答案 1 :(得分:2)
我遇到了同样的问题,我在2.2中使用了微调器,它工作但是同样在3.2中不起作用,问题在于默认主题3.2,它的全息。因为旋转器没有正确显示, 只需在值/样式中创建一个主题,并将其应用于android.manifest文件中的活动。
答案 2 :(得分:1)
您是否有机会改变微调器的可见性?
我遇到了类似的问题,每次重新显示微调器时都需要调用setAdapter()
,否则它会对点击产生免疫。
您可以在https://github.com/nikclayton/android-squeezer/commit/7a148edf5f1b3eaca7718161de18254970290ce0找到我修改此问题的项目所做的更改。
答案 3 :(得分:1)
也许是一些可见性问题? 您是否将ScrollView堆叠在旋转器项目所在区域的顶部? 尝试通过更改其图标或颜色来为旋转器使用不同的状态,并查看它们是否获得了click事件。如果他们这样做,那么它可能与可见性有关。如果他们不这样做,那可能就是别的了。 一些代码示例可以提供帮助:)
答案 4 :(得分:0)
您是否尝试将微调器设置为已启用?
spinner.setEnabled(true);
虽然在默认情况下禁用它会很奇怪。您的症状确实描述了一个禁用的微调器
答案 5 :(得分:0)
奇怪的是,我尝试了另一个我的应用程序2.2。当我在3.1平板电脑或模拟器上安装它时,onClick事件不会被激活。这次没有旋转器,但听众也不能工作!以下是一些代码:
//In onCreate:
//setup listeners
rbSlab = (RadioButton)findViewById(R.id.rbSlab);
rbBeam = (RadioButton)findViewById(R.id.rbBeam);
rbSlab.setOnClickListener(radio_listener);
rbBeam.setOnClickListener(radio_listener);
etFpc.setOnEditorActionListener(this);
etFy.setOnEditorActionListener(this);
etBw.setOnEditorActionListener(this);
etDp.setOnEditorActionListener(this);
etMu.setOnEditorActionListener(this);
...
}//end onCreate
//In Main body of app:
//for radio buttons
private OnClickListener radio_listener = new View.OnClickListener()
{ //@Override
public void onClick(View v) {
DoCalcs();
}//onClick
};
//for edittext
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{ if ((actionId == EditorInfo.IME_ACTION_DONE) || //if DONE button pushed
((event.getAction()==KeyEvent.ACTION_DOWN) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))) //if ENTER button pushed
{
//do calcs
return(true);
}
else return(false);
}
我已经使用目标API 8和min API 8以及目标API 14,min 8构建了这个,并且当安装在API 8上时,侦听器工作正常,但不能使用API 14!
答案 6 :(得分:0)
我有类似的问题。这是因为Android 3.2及以上版本的默认主题。
更简单的解决方案是使用自定义微调器,或者为其创建任何背景颜色或图片,例如:
android:background="@drawable/spinner"
这个link将帮助您定制微调器。