更改按钮可见性onClick时出错

时间:2013-01-13 07:44:01

标签: android button visibility onclicklistener

我有一个名为Check的按钮,我希望它在每次点击时都是隐形和可见的,因为如果它可见并且我点击它将变得不可见并且与诗歌竞争!

但我的代码不起作用!有任何想法吗 ?

 Button Check ;
        @Override   
         public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);  
           setContentView(R.layout.settings);

        Check  = (Button)findViewById(R.id.checkButton);

           Check.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View View) {



                if (View.getVisibility() == android.view.View.VISIBLE) 
                        View.setVisibility(android.view.View.INVISIBLE);
                        else if (View.getVisibility() == android.view.View.INVISIBLE)
                            View.setVisibility(android.view.View.VISIBLE);

            }
        });

在我的活动中,它在开始时可见,当我点击它时,它变得不可见,但是当我再次点击它时它会保持不可见!

2 个答案:

答案 0 :(得分:3)

将您的代码更改为此

Check.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                if (v.isShown()) 
                        v.setVisibility(View.INVISIBLE);
                else
                        v.setVisibility(View.VISIBLE);

            }

但我认为问题是,当按钮不可见时,你没有得到任何点击事件。首先确保在按钮不可见时调用onClick方法。

隐形按钮不会发送任何互动事件。因此,不是将按钮的可见性设置为不可见,而是可以设置透明或空白背景或类似的东西。

但我个人认为,您应该更改用例,因为为什么会点击隐藏按钮。

答案 1 :(得分:1)

试试这个:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="abcd" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:onClick="abc"
        android:text="Button" />
</LinearLayout>



public void abc(View v) {
    v.setVisibility(View.INVISIBLE);
}

public void abcd(View v) {
    v.findViewById(R.id.button1).setVisibility(View.VISIBLE);
}

不可见项目未收到点击事件。因此,您可以通过接收其他视图代替不可见视图来获得单击隐形的唯一方法。上面的解决方案将按钮包装在布局中,因此当按钮不可见时,点击将传递给布局,布局处理事件并相应地执行操作。如果您对此类布局的使用率很高,您还可以使用上述机制创建自定义按钮。