Spinner工作在2.3但不是3.2

时间:2012-03-07 18:54:52

标签: android spinner

我已经使用带有OnItemSelectedListeners的微调器在android 2.2(api8)下成功运行了一个应用程序。它是用tarketSdkVersion = 8和minSdkVersion = 8构建的。我现在试图在3.2设备上运行它,但是无法选择微调器。但它们会使用默认数组值填充,因此适配器似乎正在工作。点击旋转器会导致无反应。我尝试使用tarketSdkVersion = 13和minSdkVersion = 13构建,但是旋转器仍然死了。我使用稍微定制的微调器版本来在multiline_spinner_dropdown_item.xml文件中实现“wrap_content”。自2.2以来,旋转器是否存在兼容性问题?

7 个答案:

答案 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将帮助您定制微调器。