如何在Android中显示/隐藏分组的视图?

10

我希望创建一项活动,就像照片中提到的那样...当我按下最大化按钮时,我希望它变成全屏活动,部分1最小化,当我再次按下还原按钮时,我希望它恢复到初始状态:能够看到第1部分和第2部分...

我认为如果我们放置两个布局是可能的?不是吗?请给我提供有关此问题的资源或展示实现解决方案的代码。

输入图像描述

2个回答

14

第一部分和第二部分应该在它们自己的布局中。然后,尝试使用每个布局的 visibility 属性来操作。具体来说,为了隐藏任何视图而不使其继续占用空间,请使用 gone 作为 visibility 属性的值。

好的,下面是一个完整示例,说明如何隐藏/显示分组视图。

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/viewsContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="5dp" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextBox One" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text="TextBox Two" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text="TextBox Three" />
    </LinearLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Hide" />

</RelativeLayout>

活动

public class MyActivity extends Activity implements OnClickListener {

    private boolean viewGroupIsVisible = true;  

    private View mViewGroup;
    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mViewGroup = findViewById(R.id.viewsContainer);

        mButton = findViewById(R.id.button);
        mButton.setOnClickListener(this);
    }


    @Override
    public void onClick(View button) {

    if (viewGroupIsVisible) {
        mViewGroup.setVisibility(View.GONE);
        mButton.setText("Show");
    } else {
        mViewGroup.setVisibility(View.VISIBLE);
        mButton.setText("Hide");
    }

    viewGroupIsVisible = !viewGroupIsVisible;
}

我希望这能有所帮助 ;)


如何将一些小部件放入单个组中,以便能够隐藏所有子小部件?例如:在vb.net中,我们可以将面板或groupbox作为容器放置,然后我们可以将其设置为不可见,所有面板或groupbox内的项目都变为不可见...我需要在Android中实现类似的功能...谢谢。 - Hossein Mansouri
我刚刚编辑了我的先前答案。看看我制作的示例代码。 - Diego Palomar
请查看以下链接:https://dev59.com/SHfZa4cB1Zd3GeqPMQJ2。提前感谢您的支持。 - Hossein Mansouri

1

有一个比Diego Palomar提出的解决方案更简化,而且不使用额外的变量。我将采用他的代码来展示:

    public class MyActivity extends Activity implements OnClickListener { 

    private View mViewGroup;
    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mViewGroup = findViewById(R.id.viewsContainer);

        mButton = findViewById(R.id.button);
        mButton.setOnClickListener(this);
    }


    @Override
    public void onClick(View button) {

    if (mViewGroup.getVisibility() == View.VISIBLE) {
        mViewGroup.setVisibility(View.GONE);
        mButton.setText("Show");
    } else {
        mViewGroup.setVisibility(View.VISIBLE);
        mButton.setText("Hide");
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接