更改alpha属性时抛出错误

时间:2011-12-12 18:18:55

标签: android layout transparency alpha

我将此属性设置为视图

时出现此错误
java.lang.NoSuchMethodError: android.view.View.setAlpha

在我的代码中

((View) findViewById(R.id.view)).setAlpha(100);

//with float value also doesn't works

可能是什么问题?我只是在运行时没有任何编译错误

3 个答案:

答案 0 :(得分:3)

作为documentation状态,setAlpha需要API 11.您可能将minSDK设置为低于11的值,并在低于11的设备上安装/运行此。这意味着它不会有这个方法,所以Java找不到它。

答案 1 :(得分:1)

我使用代码来设置图像本身的Alpha,而不是视图。这可以从API级别1 ..

获得
public void toggleButton(int i) {
    if (indImageBtnEnabled[i]) {

        int di = getDrawableId(findViewById(myImagebtns[i]));
        Drawable d = this.getResources().getDrawable(di);
        d.setAlpha(25);

        ((ImageView) findViewById(myImagebtns[i])).setImageDrawable(d);

        indImageBtnEnabled[i] = false;
    } else {
        // findViewById(myImagebtns[i]).setAlpha(1f) << NEEDS API11;
        int di = getDrawableId(findViewById(myImagebtns[i]));
        Drawable d = this.getResources().getDrawable(di);
        d.setAlpha(255);

        ((ImageView) findViewById(myImagebtns[i])).setImageDrawable(d);

        indImageBtnEnabled[i] = true;
    }
}

答案 2 :(得分:1)

  

setAlpha()此方法在API级别16中已弃用。

     

使用 setImageAlpha(int)而不是

可能你有一个android:targetSdkVersion高于15,所以你可以验证何时使用setAlpha或

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
    ((View) findViewById(R.id.view)).setImageAlpha(100);
    } else {
    ((View) findViewById(R.id.view)).setAlpha(100);
}

Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1的值为15