View.VISIBLE和普通整数使用的int有什么区别?

时间:2011-08-05 00:30:21

标签: java android

如果我想切换TextView的可见性,我可以使用 View.VISIBLE View.INVISIBLE

根据Android Documentation,VISIBLE为0,INVISIBLE为1。

但是如果我使用setvisibility(0)

它就不起作用

为什么View.VISIBLE有效但不是0?

3 个答案:

答案 0 :(得分:2)

检查source code始终是Android的有效选项。显而易见的一件事是INVISIBLE 1:

/**
 * This view is visible.  Use with {@link #setVisibility}.
 */
public static final int VISIBLE = 0x00000000;

/**
 * This view is invisible, but it still takes up space for layout purposes.
 * Use with {@link #setVisibility}.
 */
public static final int INVISIBLE = 0x00000004;

但是,VISIBLE确实为0,因此使用文字0应该有效。所有setVisibility()确实代表setFlags()使用您传递的数字和VISIBILITY_MASK,即0x0C(12)。

答案 1 :(得分:1)

这些int值可以随时更改,这就是为什么在使用数字而不是enum-like参数时需要小心的原因(我知道它不是枚举...只是说)。

如果您真的想知道这些参数背后的价值,请使用:

hello.setText(Integer.toString(View.INVISIBLE))

将hello作为TextView。

在这种情况下,答案是4(.GONE是8)

答案 2 :(得分:0)

最佳方式:

private void setViewVisiblity(int visiblity){
        Button b = findViewById(R.id.btn);
        b.setVisibility(visiblity);
}

// for visible: 
setViewVisiblity(View.VISIBLE)

// for invisible: 
setViewVisiblity(View.INVISIBLE)

// for gone: 
setViewVisiblity(View.GONE)