如果我想切换TextView的可见性,我可以使用 View.VISIBLE 或 View.INVISIBLE
根据Android Documentation,VISIBLE为0,INVISIBLE为1。
但是如果我使用setvisibility(0)
它就不起作用为什么View.VISIBLE有效但不是0?
答案 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)