Android:为什么 setVisibility(View.GONE);或 setVisibility(View.INVISIBLE);不工作 [英] Android: why setVisibility(View.GONE); or setVisibility(View.INVISIBLE); do not work

查看:128
本文介绍了Android:为什么 setVisibility(View.GONE);或 setVisibility(View.INVISIBLE);不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望我的 DatePicker 和按钮在开始时不可见.当我按下我的魔法按钮时,我想 setVisibility(View.Visible);

I want my DatePicker and the button to be invisible in the begining. And when I press my magic button I want to setVisibility(View.Visible);

这里的问题是当我 setVisibility(View.GONE)setVisibility(View.INVISIBLE) 没有任何变化并且组件仍然可见时.

The problem here is when I setVisibility(View.GONE) or setVisibility(View.INVISIBLE) nothing changes and the component is still visible.

final DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);
final Button btn2 = (Button) findViewById(R.id.btnDate2);

dp2.setVisibility(View.GONE);
dp2.setVisibility(View.INVISIBLE);
btn2.setVisibility(View.GONE);
btn2.setVisibility(View.INVISIBLE);

btn2.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
        TextView txt2 = (TextView) findViewById(R.id.txt2);
        txt2.setText("You selected " + dp2.getDayOfMonth()
            + "/" + (dp2.getMonth() + 1) + "/" + dp2.getYear());
    }
});

推荐答案

我发现很多地方都错了.首先,您没有定义魔术按钮,也没有事件处理程序.

I see quite a few things wrong. For starters, you don't have your magic button defined and there is no event handler for it.

你也不应该使用:

dp2.setVisibility(View.GONE);
dp2.setVisibility(View.INVISIBLE); 

仅使用两者之一.来自 Android 文档:

Use only one of the two. From Android documentation:

View.GONE 这个视图是不可见的,它不占用任何空间布局目的.

View.GONE This view is invisible, and it doesn't take any space for layout purposes.

View.INVISIBLE 这个视图是不可见的,但它仍然占用布局空间.

View.INVISIBLE This view is invisible, but it still takes up space for layout purposes.

在您的示例中,您使用 View.INVISIBLE 一个覆盖了 View.GONE 分配.

In your example, you are overriding the View.GONE assignment with the View.INVISIBLE one.

尝试更换:

final DatePicker dp2 = new DatePicker(this)

与:

DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);  

对于其他小部件也类似:

Similarly for other widgets:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);

        final DatePicker dp2 = new DatePicker(this);
        final Button btn2 = new Button(this);
        final Button magicButton = new Button(this);
        final TextView txt2 = new TextView(TestActivity.this);

        dp2.setVisibility(View.GONE);
        btn2.setVisibility(View.GONE);
        btn2.setText("set Date");

        btn2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                txt2.setText("You selected "
                    + dp2.getDayOfMonth() + "/" + (dp2.getMonth() + 1) 
                    + "/" + dp2.getYear());
            }
        });

        magicButton.setText("Magic Button");
        magicButton.setOnClickListener(new View.OnClickListener()    
            public void onClick(View arg0) {
                dp2.setVisibility(View.VISIBLE);
                btn2.setVisibility(View.VISIBLE);
            }
        });

    ll.addView(dp2);
    ll.addView(btn2);
    ll.addView(magicButton);
    ll.addView(txt2);

    setContentView(ll);
}

这篇关于Android:为什么 setVisibility(View.GONE);或 setVisibility(View.INVISIBLE);不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆