FrameLayout:以编程方式将一个布局放在另一个布局的顶部

时间:2016-06-05 11:07:55

标签: android android-framelayout

我有一个框架布局,包含两个子线性布局(一个在另一个之上)  我有两个按钮" 1"和" 2" 当我按1时,我想要第二个线性布局顶部的第一个线性布局

当我按下2时,我希望第一个线性布局顶部的第二个线性布局

我使用了bringToFront()这样做 但没有任何反应

我的布局

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:gravity="center">

    <Button
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/button1"
        android:text="1"/>

    <Button
        android:layout_height="wrap_content"
        android:text="2"
        android:layout_width="wrap_content"
        android:id="@+id/button2"/>

</LinearLayout>

<FrameLayout
    android:layout_height="0dp"
    android:layout_width="match_parent"
    android:layout_weight="1">

    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:background="#D88681"
        android:id="@+id/firstLayout"/>

    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:background="#57E8A7"
        android:id="@+id/secondLayout"/>

</FrameLayout>

我的主要活动

public class MainActivity extends Activity 
{

LinearLayout first, second;
Button btn1, btn2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    first = (LinearLayout) findViewById(R.id.firstLayout);
    second = (LinearLayout) findViewById(R.id.secondLayout);

    Button btn1 = (Button) findViewById(R.id.button1);

    btn1.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View p1)
            {
                first.bringToFront();
            }


    });


    btn2 = (Button) findViewById(R.id.button2);
    btn2.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View p1)
            {
                second.bringToFront();
            }
    });
   }
}

2 个答案:

答案 0 :(得分:0)

您可以使用bringtofront()方法设置Linearlayouts的可见性。 例如。

     first.setVisibility(View.GONE);
     second.setVisibility(View.VISIBLE);

这将使第一个视图消失,第二个视图可见。

答案 1 :(得分:0)

忘记使父布局无效 添加此

myView.bringToFront();
    ((View)myView.getParent()).invalidate();
                ((View)myView.getParent()).requestLayout();