【问题标题】:how to show/hide layout on button click如何在按钮单击时显示/隐藏布局
【发布时间】:2020-04-25 23:47:22
【问题描述】:

我想在第一个 relativelayout 有两个 relativelayout 有地图,在第二个 relativelayout 我有列表..,我想在开始时只有带有地图的布局将在屏幕上显示一个按钮,当我点击按钮然后布局listview 从右侧打开,顶部有新按钮,prevoius 按钮隐藏。屏幕被分为具有不同布局的两个部分。 .

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/ListView_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="1" >

    <RelativeLayout
        android:id="@+id/rl_ListView1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5" >

        <Button
            android:id="@+id/getdirection"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="Get Directions" />

        <fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.MapFragment" >
        </fragment>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl_ListView2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:visibility="invisible" >

        <Button
            android:id="@+id/hide"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="Get Directions" />

        <ListView
            android:id="@+id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:visibility="invisible" />
    </RelativeLayout>

</LinearLayout>

MainActivity

 show = (TextView)findViewById(R.id.getdirection);
         show1 = (TextView)findViewById(R.id.hide);
         rt = (RelativeLayout)findViewById(R.id.rl_ListView2);
show.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            // TODO Auto-generated method stub

                            if(rt.getVisibility()==View.INVISIBLE)
                            {
                                rt.setVisibility(View.VISIBLE);

                            }
                           show.setVisibility(View.INVISIBLE);


                        }
                    });
show1.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            // TODO Auto-generated method stub

                            if(rt.getVisibility()==View.VISIBLE)
                            {
                                rt.setVisibility(View.INVISIBLE);

                            }
                           show1.setVisibility(View.INVISIBLE);


                        }
                    });

【问题讨论】:

  • 将按钮点击时布局的可见性设置为可见
  • 尝试使用可见性 GONE 而不是 INVISIBLE。

标签: android android-layout


【解决方案1】:

试试这个:

由于 weight 属性,您从开始时将 layout1 显示为半屏。您可以尝试在开始时不给予权重,并在按钮单击时以编程方式给予它。

button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        button1.setVisibility(View.GONE);  //hide old button
        layout2.setVisibility(View.VISIBLE);  //show layout2
        //set Relativelayout 1 to half screen
        RelativaLayout.LayoutParams params = layout1.getLayoutParams(); 
        params.weight = 0.5;
        layout1.setLayoutParams(params);
    }
});

希望这会有所帮助。

【讨论】:

  • @PurpleDroid 我的问题是在活动开始时只有地图会在屏幕上和一个按钮上可见..,在按钮点击屏幕上被分成两半..1 将显示地图,其他将显示列表
  • 我不知道为什么,但是 params.weight 重新调整我的错误..,没有将重量作为参数的属性
  • @user3683036 尝试使用 LinearLayout.LayoutParams 而不是 RelativeLayout.LayoutParams。 Reference
  • 它没有帮助我。 @PurpleDroid
【解决方案2】:

将可见性设置为 Gone 而不是 Invisible

【讨论】:

    【解决方案3】:
     button.setOnClickListener(this);
        public void onClick(View v) {
        layoutid.setVisibility(View.GONE);
        }
    

    【讨论】:

    • 你想达到什么目标,发生了什么我无法理解你上面的问题
    • @ Hak Hak 我的问题是在活动开始时只有地图会在屏幕上和一个按钮上可见..,在按钮点击屏幕上被分成两半..1将显示地图,其他将显示list.right 现在开始 m 获得我想要的按钮点击分割​​屏幕
    【解决方案4】:

    您可以按照 Amiya 的建议尝试使用 isShown()

    <b>
    button2.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View view) {
       if(button1.isShown()) {
    
       // Your_Staff
        }
        else{
              // Your_Staff
        }
    }
    });
    </b>
    

    【讨论】:

      【解决方案5】:

      在我看来,您没有将LinearLayout 中的方向设置为两个RelativeLayouts 的垂直方向。我还建议您将地图和Button 放在FrameLayout 中,而不是RelativeLayout

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 2016-05-21
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多