android以编程方式设置状态颜色列表

时间:2013-06-08 07:49:55

标签: android layout selector

我正在尝试创建一个用户可主题应用。我有可点击的线性布局,我需要在将布局添加到父视图时以编程方式设置选择器。但是,当我设置v.SetBackground()时,以下代码抛出NoSuchMetod异常。

我哪里错了?

           LinearLayout d = (LinearLayout) inflater.inflate(R.layout.adapter_psudo_launcheritem, null);             

            ColorDrawable clrBase = new ColorDrawable();
            clrBase.setColor(gCurrentTheme.Colours.Backgrounds.MenuItem);
            ColorDrawable clrSelect = new ColorDrawable();
            clrSelect.setColor(gCurrentTheme.Colours.Backgrounds.MenuItem_Select);
            ColorDrawable clrPress = new ColorDrawable();
            clrPress.setColor(gCurrentTheme.Colours.Backgrounds.MenuItem_Press);

            StateListDrawable states = new StateListDrawable();
            states.addState(new int[] {android.R.attr.state_enabled}, clrBase);
            states.addState(new int[] {android.R.attr.state_selected}, clrSelect);
            states.addState(new int[] {android.R.attr.state_pressed}, clrPress);

       //This line causes a NoSuchMethod exception!
            v.setBackground(states);

1 个答案:

答案 0 :(得分:0)

View.setBackgroud已在api level 16和replaceB setBackgroundDrawable中引入(自API 16以来不推荐使用))如果运行上述代码的移动设备为{{1}如果级别低于16,则必须使用API