按下按钮时,将一个XML布局打开到另一个XML布局

时间:2013-03-18 21:33:35

标签: android android-layout

基本上,我有两个XML文件

  1. weeks.xml
  2. weekone.xml
  3. week.xml代码

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--
    Begin Relative Layout
    -->
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:scrollHorizontally="true"
        android:background="@drawable/appbackground">
    
    
    
        <TextView
        android:id="@+id/about_title"
        android:layout_width="fill_parent"
        android:layout_height="49dp"
        android:background="#00141c"
        android:fontFamily="Hobo Std"
        android:gravity="center"
        android:text="@string/start"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#FFFFFF"
        android:textSize="25sp"
        android:textStyle="bold" />
    
        <ImageView 
         android:id="@+id/backarrow" 
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:clickable="true"
         android:src="@drawable/arrow"/>
    
        <ImageView
            android:id="@+id/week4"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_marginRight="24dp"
            android:clickable="true"
            android:paddingTop="400dp"
            android:src="@drawable/weekfour" />
    
        <ImageView
            android:id="@+id/week3"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/week4"
            android:clickable="true"
            android:paddingTop="400dp"
            android:src="@drawable/weekthree" />
    
        <ImageView
            android:id="@+id/week2"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/week3"
            android:clickable="true"
            android:paddingTop="400dp"
            android:src="@drawable/weektwo" />
    
        <ImageView
            android:id="@+id/week1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/week2"
            android:clickable="true"
            android:paddingTop="400dp"
            android:src="@drawable/weekone" />
    
    
        <TextView
            android:id="@+id/hinttext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/week1"
            android:layout_below="@+id/backarrow"
            android:layout_marginTop="162dp"
            android:gravity="center_vertical"
            android:text="Press week1 to start workout" />
    
     <!-- 
     End of Relative Layout
      -->
    
    
        </RelativeLayout>
    

    weekone.xml的代码

    <?xml version="1.0" encoding="UTF-8"?>
    
                 <!-- Begin of Linear Layout -->
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="400dp"
        android:orientation="vertical"
        android:background="@drawable/screenbackground"
        android:paddingTop="70dp" >
    
        <!--     Line seperator     -->
    
        <View
                android:layout_width="fill_parent"
                android:layout_height="2dp"
                android:id="@+id/separator"
                android:visibility="visible"
                android:background="#00141c"/>
    
        <TextView
            android:id="@+id/week1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/week1"
            android:textColor="#FFFFFF"
            android:textSize="25sp"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:background="#00141c"/>
    
    
                <!-- Begin Scrollable Relative Layout -->
    
    <ScrollView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    
    <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:scrollHorizontally="true">     
    
    
        <ImageView
            android:id="@+id/treadmillimage"
            android:layout_width="115dp"
            android:layout_height="93dp"
            android:paddingTop="10dp"
            android:src="@drawable/treadmill" />
    
        <EditText
            android:id="@+id/durOnTreadmill"
            android:layout_width="129dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number"
            android:layout_marginLeft="180dp" 
            android:layout_centerVertical="true"/>
    
                <!--     Line seperator     -->
    
        <View
                android:layout_width="fill_parent"
                android:layout_height="2dp"
                android:id="@+id/separator"
                android:visibility="visible"
                android:background="#00141c"/>
    
    
    
    
                <!--    End Relative Layout   -->
    
        </RelativeLayout>
    
    
        <TextView
            android:id="@+id/treadmilltext"
            android:layout_width="91dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:text="@string/treadmill"
            android:textColor="#FFFFFF"
            android:textSize="20sp" />
    
    <!--        Begin Relative Layou        -->
    
        <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:scrollHorizontally="true">
    
        <ImageView
            android:id="@+id/stepperimage"
            android:layout_width="115dp"
            android:layout_height="93dp"
            android:paddingTop="10dp"
            android:src="@drawable/stepper" />
    
        <EditText
            android:id="@+id/durOnStepper"
            android:layout_width="129dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number"
            android:layout_marginLeft="180dp" 
            android:layout_centerVertical="true"/>
    
            <!--     Line seperator     -->
    
        <View
                android:layout_width="fill_parent"
                android:layout_height="2dp"
                android:id="@+id/separator"
                android:visibility="visible"
                android:background="#00141c"/>
    
    
             <!--   End Relative Layout  -->
    
        </RelativeLayout>
    
        <TextView
            android:id="@+id/steppertext"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:text="@string/stepper"
            android:textColor="#FFFFFF"
            android:textSize="20sp" />
    
    <!--    Begin Relative Layout    -->
    
        <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:scrollHorizontally="true">
    
        <ImageView
            android:id="@+id/stationaryrowing"
            android:layout_width="115dp"
            android:layout_height="93dp"
            android:paddingTop="10dp"
            android:src="@drawable/stationaryrowing" />
    
        <EditText
            android:id="@+id/durOnStationaryRowing"
            android:layout_width="129dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number"
            android:layout_marginLeft="180dp" 
            android:layout_centerVertical="true"/>
    
        <!--     Line seperator     -->
    
        <View
                android:layout_width="fill_parent"
                android:layout_height="2dp"
                android:id="@+id/separator"
                android:visibility="visible"
                android:background="#00141c"/>
    
    
    <!--
    End Relative Layout
    -->
        </RelativeLayout>
    
        <TextView
            android:id="@+id/stationaryrowingtext"
            android:layout_width="108dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:text="@string/stationaryrowing"
            android:textColor="#FFFFFF"
            android:textSize="20sp" />
    
         <!--   Begin Relative Layout   -->
         <RelativeLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:scrollHorizontally="true">
    
        <ImageView
            android:id="@+id/exercisebikeimage"
            android:layout_width="115dp"
            android:layout_height="93dp"
            android:paddingTop="10dp"
            android:src="@drawable/ellipticaltrainer"/>
    
        <EditText
            android:id="@+id/durOnexcerisebike"
            android:layout_width="129dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number"
            android:layout_marginLeft="180dp" 
            android:layout_centerVertical="true"/>
    
            <!--     Line seperator     -->
    
        <View
                android:layout_width="fill_parent"
                android:layout_height="2dp"
                android:id="@+id/separator"
                android:visibility="visible"
                android:background="#00141c"/>
    
        <!--    End Relative Layout  -->
    
        </RelativeLayout>
    
         <TextView
            android:id="@+id/excerisebiketext"
            android:layout_width="91dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:text="@string/exercisebike"
            android:textColor="#FFFFFF"
            android:textSize="20sp" />
    
        <!--    Begin Relative Layout   -->
    
           <RelativeLayout 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" 
                android:scrollHorizontally="true">
    
        <ImageView
            android:id="@+id/ellipticaltrainerimage"
            android:layout_width="115dp"
            android:layout_height="93dp"
            android:paddingTop="10dp"
            android:src="@drawable/ellipticaltrainer"/>
    
        <EditText
            android:id="@+id/durOnellipticaltrainer"
            android:layout_width="129dp"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="number"
            android:layout_marginLeft="180dp" 
            android:layout_centerVertical="true"/>
    
            <!--     Line seperator     -->
    
        <View
                android:layout_width="fill_parent"
                android:layout_height="2dp"
                android:id="@+id/separator"
                android:visibility="visible"
                android:background="#00141c"/>
    
        <!--        End Relative Layout      -->
    
    </RelativeLayout>
    
            <TextView
            android:id="@+id/ellipticaltrainertext"
            android:layout_width="91dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:text="@string/ellipticaltrainer"
            android:textColor="#FFFFFF"
            android:textSize="20sp" />
    
      </ScrollView>
    <!--
    End Linear Layout
    -->
    </LinearLayout>   
    

    所以,我想要实现的是,当我按下可点击的ImageView第1周时,它会隐藏Textview“hintText”并对同一个活动执行weekone.xml。我看过FrameLayout,因为这用于将布局放在彼此之上,我希望看到两个布局都不符合我的需要。当您按下空白区域时,ViewFlipper用于更改布局,但是当我按下“第1周”按钮时我希望它更改

    请帮助,我一直试图解决这个问题,因为2天但没有快乐:(。 谢谢:))

2 个答案:

答案 0 :(得分:1)

hintText中换行FrameLayout,然后致电

FrameLayout fl = (FrameLayout)findViewById(R.id.your_framelayout_id);
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
fl.removeAllViews();
fl.addView(inflater.inflate(R.layout.weekone, null));

这会从hintText中删除FrameLayout,然后加载weekone.xml并将其内容放入FrameLayout所在的hintText

事实上,您在setContentView()中使用的onCreate()内部调用的东西非常类似于将XML放在主应用程序窗口中。

在一个不太复杂的布局中,另一种方法是使用静态布局包含(您可以在Layouts中的Eclipse图形布局编辑器中找到“包含其他布局”)并将其可见性设置为{{1} }。然后你可以打电话

gone

如果你想保存几行代码。

另一种方法是使用“现代”并使用片段包含(guidereference)。掌握需要一些时间,但从长远来看绝对值得。

答案 1 :(得分:0)

如果我已经理解了您要做的事情,您可以尝试创建第三个布局,其中包含您已经拥有的两个布局。按Week1时,OnClick()方法将布局从weeks.xml更改为third.xml。

您也可以只创建一个包含week.xml的布局,其中一个whit visible = true,另一个布局包含visible = false。单击图像视图将设置相应的布局visible = true。