如何根据按钮点击隐藏和显示视图?

如何根据按钮点击隐藏和显示视图?

问题描述:

我有使用以下布局的Activity如何根据按钮点击隐藏和显示视图?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity" > 

    <Button 
     android:id="@+id/btnCapture" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Start capture" /> 

    <Button 
     android:id="@+id/btnPlay" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Play video" /> 

    <SurfaceView 
     android:id="@+id/surfaceView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <VideoView 
     android:id="@+id/videoView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" />  

</LinearLayout> 

如何隐藏surfaceView并显示videoView当点击btnPlay?我还想做类似的工作,其中videoView隐藏,点击btnCapture时显示surfaceView

这是我如何隐藏和显示的看法:

surfaceView.setVisibility(View.GONE); 

videoView.setVisibility(View.VISIBLE); 
+0

您需要向我们展示多一点你的代码,看看你在做什么。这就是你将如何显示一个'View'和'Gone'不会隐藏它,而是完全删除它以腾出空间给其他东西 – codeMagic 2013-03-15 23:03:19

+0

我可能会从布局文件中删除'SurfaceView'和'VideoView'并且放入一个“FrameLayout”,然后在需要时在代码中创建“SurfaceView”或“VideoView”,并将它们放在“FrameLayout”中。 – Squonk 2013-03-15 23:23:50

最简单的方法就是把两个surfaceView和videoView在不同的LinearLayout,然后用LinearLayout中setVisibility()背后的btnCapture点击播放。

也许是这样的:

btnPlay.setOnClickListener(new View.OnClickListener() { 

@Override 
public void onClick(View v) { 
if (surfaceView_linearlayout.getVisibility() == 0) { 
    videoView_linearlayout.setVisibility(View.VISIBLE); 
    surfaceView_linearlayout.setVisibility(View.GONE); 
} 

} 
}); 

btnCapture.setOnClickListener(new View.OnClickListener() { 

@Override 
public void onClick(View v) { 
if (videoView_linearlayout.getVisibility() == 0) { 
    surfaceView_linearlayout.setVisibility(View.VISIBLE); 
    videoView_linearlayout.setVisibility(View.GONE); 
    } 

} 
});