如何在按钮点击时显示/隐藏布局

时间:2014-07-02 04:52:59

标签: android android-layout

我希望在第一个relativelayout中有两个relativelayout有地图,在第二个relativelayout我有列表..,我想在开始时只有布局与地图将在屏幕上显示一个按钮,当我点击按钮然后布局随着listview从右侧打开,顶部有新的新按钮,而prevoius按钮得到hide.and屏幕分为两个部分,不同的布局..我做了一些事情,但从开始向前获得半个半屏幕

<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);


                        }
                    });

5 个答案:

答案 0 :(得分:2)

试试这个:

由于重量属性,您在半屏幕中获得布局1。您可以尝试在开始时不给予重量,并在按钮单击时以编程方式给出它。

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);
    }
});

希望这有帮助。

答案 1 :(得分:0)

将可见性设置为消失而不是不可见

答案 2 :(得分:0)

 button.setOnClickListener(this);
    public void onClick(View v) {
    layoutid.setVisibility(View.GONE);
    }

答案 3 :(得分:0)

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

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

   // Your_Staff
    }
    else{
          // Your_Staff
    }
}
});
</b>

答案 4 :(得分:0)

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