视图在View.VISIBLE之后忽略alpha值

时间:2016-03-07 09:31:36

标签: android button view alpha

我有一个按钮,alpha设置为0.5,其可见性在布局中消失了。

 <Button
     android:id="@+id/Button"
     android:layout_width="match_parent"
     android:layout_height="50dp"
     android:background="@color/black_color" 
     android:alpha="0.5"
     android:visibility="gone"/>

在某些时候,我希望让它可见(Button.setVisibility(View.VISIBLE);),但是当我这样做时 - 它不是半透明的(0.5)。看起来好像alpha设置为1。

3 个答案:

答案 0 :(得分:5)

此问题通常是父视图中android:animateLayoutChanges="true"的结果。原因是设置可见性的布局动画也会更改视图的alpha并覆盖setAlpha所做的更改。

要解决此问题,您可以从父级移除android:animateLayoutChanges="true",也可以创建自定义视图以onVisibilityChanged设置可见性,如下所示:

public class AlphaView extends View {

    private static final String TAG = AlphaView.class.getSimpleName();

    public AlphaView(Context context) {
        super(context);
    }

    public AlphaView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public AlphaView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public AlphaView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);

        if (visibility == VISIBLE) {
            setAlpha(0.5f);
        }
    }
}

答案 1 :(得分:0)

Button Gone设置为Visible后,添加Button

的Alpha

喜欢:

buttonObject.setAlpha(.5f);

答案 2 :(得分:0)

我也遇到了这个问题。这似乎是Android本身的一个错误。我的解决方案是避免设置可见性,并仅调整alpha。我的观点具有“可见”的可见性。在XML中,并从XML alpha标记值设置为0.0开始。然后,当我希望它可见时,我会以编程方式调整alpha:

        dimmerView.setAlpha(.15f);

我通过再次将alpha设置为零来消失它。从理论上讲,您可能需要使用bringToFront调整z轴上的各种视图位置(并且在alpha设置为零时您可能想要删除其侦听器的情况下),但在我的实现中它似乎不是必要的。

相关问题