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

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

问题描述

我希望我的的DatePicker 按钮可以是无形的,在开始时。当我preSS我的魔力按钮,我想setVisibility(View.Visible);

这里的问题是,当我 setVisibility(View.GONE) setVisibility(View.INVISIBLE)没有什么变化和组分仍然是可见的。

 最后的DatePicker DP2 =(DatePicker的)findViewById(R.id.datePick2);
最终按钮BTN2 =(按钮)findViewById(R.id.btnDate2);

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

btn2.setOnClickListener(新View.OnClickListener(){
    公共无效的onClick(查看为arg0){
        TextView的TXT2 =(TextView中)findViewById(R.id.txt2);
        txt2.setText(你选择了+ dp2.getDayOfMonth()
            +/+(dp2.getMonth()+ 1)+/+ dp2.getYear());
    }
});
 

解决方案

我看到相当多的东西是错误的。对于初学者,你没有你的魔法按钮定义并没有事件处理程序。

此外,你不应该使用:

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

使用只有一两个。从的Andr​​oid文档

  

View.GONE这种观点是不可见的,并且不承担任何空间   布局的目的。

     

View.INVISIBLE这种观点是无形的,但它仍然   占用空间布局的目的。

在你的榜样,你是覆盖 View.GONE 分配与 View.INVISIBLE 之一。


尝试更换:

 最后的DatePicker DP2 =新的DatePicker(本)
 

 的DatePicker DP2 =(DatePicker的)findViewById(R.id.datePick2);
 

同样,对于其他部件:

 公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);

        的LinearLayout LL =新的LinearLayout(本);
        ll.setOrientation(LinearLayout.VERTICAL);

        最后的DatePicker DP2 =新的DatePicker(本);
        最终按钮BTN2 =新的按钮(这一点);
        最终按钮magicButton =新的按钮(这一点);
        最后的TextView TXT2 =新的TextView(TestActivity.this);

        dp2.setVisibility(View.GONE);
        btn2.setVisibility(View.GONE);
        btn2.setText(设定日期);

        btn2.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(查看为arg0){
                txt2.setText(你选择了
                    + dp2.getDayOfMonth()+/+(dp2.getMonth()+1)
                    +/+ dp2.getYear());
            }
        });

        magicButton.setText(神奇按钮);
        magicButton.setOnClickListener(新View.OnClickListener()
            公共无效的onClick(查看为arg0){
                dp2.setVisibility(View.VISIBLE);
                btn2.setVisibility(View.VISIBLE);
            }
        });

    ll.addView(DP2);
    ll.addView(BTN2);
    ll.addView(magicButton);
    ll.addView(TXT2);

    的setContentView(Ⅱ);
}
 

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);

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.

Also you shouldn't use:

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

Use only one the two. From Android documentation:

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

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

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


Try replacing:

final DatePicker dp2 = new DatePicker(this)

with:

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);
}

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

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