Android-如何在条件下显示按钮?

Android-如何在条件下显示按钮?,android,Android,我有一个按钮,基本上是这样的: <Button android:id="@+id/admin_new_questions" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="See Asked Questions" /> if ( clause ) { Button admin_s

我有一个按钮,基本上是这样的:

 <Button
    android:id="@+id/admin_new_questions"        
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="See Asked Questions"
    />    
if ( clause )
{
        Button admin_see_questions = (Button)findViewById(R.id.admin_new_questions);   
        admin_see_questions.setOnClickListener(new Button.OnClickListener() 
        {  
            public void onClick(View v) 
            {
           ....    
            }
        });        
}
但由于某些原因,所有情况下都会显示该按钮,但如果子句出错,则不会侦听Listener

如何使按钮仅在子句为true时显示


谢谢

在xml中将按钮的初始状态设置为“消失/不可见”,然后在代码中检查条件

<Button
    android:id="@+id/admin_new_questions"        
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="See Asked Questions"
    android:visibility="gone"
    />

默认情况下,将显示XML中声明的所有UI组件。您需要:

  • 指定它在布局XML中不可见

    <Button ...
     android:visibility="gone"
     />
    

  • 您可以使用
    setVisibility
    中的
    View.GONE
    View.VISIBLE
    作为起点来控制此操作

    是否使用View.GONE或其他类似值取决于是否要在布局中考虑此按钮

    您可以查看此问题以了解更多信息:


    您也可以禁用它,使其可见,但不处于活动状态,这可能是一个更好的选择。

    使用admin\u-see\u-questions.setVisibility(View.go)admin\u-see\u-questions.setVisibility(View.VISIBLE)您没有设置按钮的可见性。它们有三个可见性选项:可见、不可见和消失。下面的代码应该可以工作,根据子句显示或隐藏按钮

    Button admin_see_questions = (Button)findViewById(R.id.admin_new_questions); 
    if ( clause )
    {  
            admin_see_questions.setVisibility(View.VISIBLE);
            admin_see_questions.setOnClickListener(new Button.OnClickListener() 
            {  
                public void onClick(View v) 
                {
               ....    
                }
            });        
    } else admin_see_questions.setVisibility(View.INVISIBLE); //may want to use View.GONE here depending on what you want to accomplish
    
    .setVisibility(View.GONE);隐藏

    ViewGroup=(ViewGroup)(myView.getParent());
    群组移除视图(myView);要删除

    请在条件满足时尝试此操作

    if ( clause )
    {
    admin_see_questions.setVisibility(admin_see_questions.VISIBLE);
    }
    else
    admin_see_questions.setVisibility(admin_see_questions.INVISIBLE);
    

    您的按钮位于XML布局中,因此您可以通过更改其
    可见性来隐藏或显示它

    注意:这些操作只需执行一次:

  • 使用
    findViewById()
  • 设置按钮的
    OnClickListener

    <Button
    android:id="@+id/admin_new_questions"        
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="See Asked Questions"
    
    android:visibility="invisible" //Initially hide the button
    
    />    
    

    您需要删除或隐藏按钮。尝试使用
    admin\u see\u questions.setVisibility(View.INVISIBLE)
    admin\u see\u questions.setVisibility(View.GONE)
    。要再次显示该按钮,请调用
    admin\u see\u questions.setVisibility(View.VISIBLE)

    您的代码将永远无法编译。您的按钮不在else子句的范围内。其他人已经正确回答了您的问题,但我想就用户体验问题向您提供建议。我认为隐藏不是这样做的正确方式。正确的方法是始终显示按钮,但如果子句为false则禁用它,如果为true则启用它:)
    if ( clause )
    {
    admin_see_questions.setVisibility(admin_see_questions.VISIBLE);
    }
    else
    admin_see_questions.setVisibility(admin_see_questions.INVISIBLE);
    
    <Button
    android:id="@+id/admin_new_questions"        
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="See Asked Questions"
    
    android:visibility="invisible" //Initially hide the button
    
    />    
    
    Button admin_see_questions = (Button)findViewById(R.id.admin_new_questions);   
    admin_see_questions.setOnClickListener(new Button.OnClickListener() 
    {  
        public void onClick(View v) 
        {
            ....       
        }
    });  
    
    if ( clause )
    {
        admin_see_questions.setVisibility(View.VISIBLE); //SHOW the button
    }