2013-01-14 94 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