2012-04-03 77 views
2

我有一個按鈕,基本上是這樣的: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_see_questions = (Button)findViewById(R.id.admin_new_questions); 
     admin_see_questions.setOnClickListener(new Button.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
      ....  
      } 
     });   
} 

但由於某些原因,則顯示所有按鈕的情況下,但是如果該子句是錯誤的,則不會收聽該收聽者。

只有當該條款爲真時,我如何才能使按鈕顯示?

謝謝!

+0

'setvisibility(View.GONE)' – 2012-04-03 14:11:32

+0

其他人已經正確回答了您的問題,但我想就UX問題向您提供建議。我認爲隱藏並不是這樣做的正確方法。恕我直言,正確的方法是始終顯示按鈕,但禁用它,如果該子句是假的,並啓用它,如果它是真的:) – StErMi 2012-04-03 14:35:47

回答

5

你的按鈕是在XML佈局,那麼你可以將其隱藏或只是改變其visibility

NB表現出來:你只需要執行這些操作一次

  1. 獲取到您的按鈕的引用,具有findViewById()
  2. 設置按鈕

    <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 
    
    />  
    

OnClickListener -

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 
} 
1

將你的按鈕的初始狀態設置爲xml中的Gone/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="gone" 
    /> 

,如果條件是真還是假,則:

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); 
else 
    admin_see_questions.setVisibility(View.GONE); 
+1

您的代碼將永遠不會編譯。你的按鈕不在else子句的範圍內。 – onit 2012-04-03 14:17:34

+0

是的,並修復,謝謝:) – waqaslam 2012-04-03 14:32:46

1

在他宣佈XML所有的UI組件默認顯示。您需要:

  1. 指定,它不應該在佈局XML可見

    <Button ... 
    android:visibility="gone" 
    /> 
    
  2. 隱藏它,如果評估爲假的條件:

    Button admin_see_questions = (Button)findViewById(R.id.admin_new_questions); 
    if (!clause) { 
        admin_see_questions.setVisibility(View.GONE); 
    } 
    
1

您可以在setVisibility中使用View.GONEView.VISIBLE來控制這個,作爲起始點INT。

是否使用View.GONE或其他類似的值取決於您是否希望此按鈕在佈局中佔據。

你可以看一下這個問題的詳細資料:

Android: why setVisibility(View.GONE); or setVisibility(View.INVISIBLE); do not work

你也可以只禁用它,所以可以看出,但不活躍,這可能是一個更好的選擇。

1

使用admin_see_questions.setVisibility(View.GONE)admin_see_questions.setVisibility(View.VISIBLE)

1

您沒有設置按鍵的知名度。他們有三種可見性選項,可見,不可見,並且已消失。下面的代碼應該可以工作,顯示或隱藏基於該子句的按鈕。

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 
1

.setVisibility(View.GONE);隱藏

ViewGroup group =(ViewGroup)(myView.getParent()); grouo。removeView(MyView的);除去

1

嘗試了這一點,當條件滿足

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

您需要刪除或隱藏按鈕。嘗試使用admin_see_questions.setVisibility(View.INVISIBLE)admin_see_questions.setVisibility(View.GONE)。要再次顯示該按鈕,請致電admin_see_questions.setVisibility(View.VISIBLE)

相關問題