2013-01-14 97 views
8

我有一個線性佈局,並且裏面還有一些按鈕。我希望在觸摸時使其可見,而在再次觸摸時不可見。隱藏並顯示線性佈局

我該怎麼做?

+2

您可以使用.setVisibility來做到這一點。但是,用戶如何知道該按鈕在那裏,而它將隱形? –

回答

0

你應該用戶

隱形 - :mButton.setVisibility(View.INVISIBLE);

Vsible - :mButton.setVisibility(View.VISIBLE);

放入的onclick按鈕的聽者此代碼,如果條件檢查。

2

添加setOnTouchListener到LinearLayout中獲得的觸摸事件:

linearLayout.setOnTouchListener(new OnTouchListener(){ 
    public boolean onTouch(View v, MotionEvent event){ 

    if (event.getAction() == MotionEvent.ACTION_DOWN) { 

     // show-hide view here 

     return true; 
     } 

    if (event.getAction() == MotionEvent.ACTION_UP) { 

     // show-hide view here 

     return true; 
     } 

    return false; 
    } 
}); 

製作查看可見使用yourview.setVisibility(View.VISIBLE)和無形使用yourview.setVisibility(View.INVISIBLE)

+0

我不瞭解yourview.setVisibility(View.VISIBLE)和yourview.setVisibility(View.INVISIBLE)。你可以解釋一下 –

+0

@KokoKrunch:你的意思是你想要的視圖(如linarlayout,buttons,textviews,...)顯示/隱藏例如'linarlayout.setVisibility(View.INVISIBLE);'或linarlayout.setVisibility(View.VISIBLE);' –

+0

我需要把位於linearlayout的每個按鈕,或者我只需要把'僅顯示linearlayout' '隱藏視圖' –

3

您的代碼添加一個布爾

boolean flag = false; 

再加入android:clickable = true你的線性佈局上xml

然後使用此代碼以供參考

your_linear_layout = new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     if (flag){ 
     // means true 
     your_linear_layout.setVisibility(View.INVISIBLE); 
     flag = false; 
     } 
     else{ 
     your_linear_layout.setVisibility(View.VISIBLE) 
     flag = true; 
     } 

    } 

}; 

還沒有嘗試過這種尚未但這應該工作..

乾杯

+0

使用view.isShown()或getVisibility(),你不需要這個布爾值。 – RobGThai

+0

@RobGThai謝謝你的提示。其實它對自己的執行.. – Androyds

20
LinearLayout one = (LinearLayout) findViewById(R.id.one); 
one.setVisibility(View.GONE); 

我建議你使用的GONE insteady無形onclick事件,因爲 View.GONE佈局的位置將不可見,並且應用程序不會顯示其中有未使用的空間就像View.INVISIBLE那樣將會留下用於佈局的間隙

+0

謝謝!像魅力一樣工作。然後我使用'View.VISIBLE'來使我的重新出現。 – Joe