Android XML文件中元素的位置

时间:2014-04-01 17:01:47

标签: android xml layout tableview

我有一个关于如何在XML文件中为Android活动定位元素的问题。

我需要实现的目标如下: Desired Layout

基本上我需要: 一组9个正方形(3x3表),覆盖屏幕高度的50% 在屏幕的第二部分,3个均匀分布的区域,每个区域都有一个文本视图/按钮。

我使用带有此代码的tableview创建了9个方块的集合:

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="386dp"
    android:stretchColumns="*" >

    <TableRow
        android:id="@+id/Row1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/square1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="1"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />

        <Button
            android:id="@+id/square2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="3"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />

        <Button
            android:id="@+id/square3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="3"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />
    </TableRow>

    <TableRow
        android:id="@+id/Row2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/square4"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="1"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />

        <Button
            android:id="@+id/square5"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="1"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />

        <Button
            android:id="@+id/square6"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="1"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />
    </TableRow>

    <TableRow
        android:id="@+id/Row3"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/square7"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="1"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />

        <Button
            android:id="@+id/square8"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="2"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />

        <Button
            android:id="@+id/square9"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:text="3"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="60sp" />
    </TableRow>
</TableLayout>

此部分包含在相对布局中。 现在我无法以任何方式将此部分设置为屏幕的50%,并使用3个按钮添加第二个50%。

希望你能帮助我。我在这里搜索了答案,但未找到任何相关主题

3 个答案:

答案 0 :(得分:0)

使用LinearLayout代替RelativeLayout并使用android:weight属性获得50%的屏幕高度,如下所示...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="2" >

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_wieght="1" >

        ..............

        ..............

    </TableLayout>


    <!-- Other other layout which will take android:layout_wieght="1" -->

</LinearLayout>

答案 1 :(得分:0)

这只是使用LinearLayout的一个非常简单的答案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

        </LinearLayout>

        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

        </LinearLayout>

        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

            <Button 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="one part"/>

        </LinearLayout>       


    </LinearLayout>


    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <Button 
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="one part"/>

        <Button 
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="one part"/>

        <Button 
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="one part"/>

    </LinearLayout>


</LinearLayout>

result

答案 2 :(得分:0)

你走了:

<TableLayout 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" >

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

    <Button 
        android:text="1" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
    <Button 
        android:text="2"
        android:layout_height="match_parent" 
        android:layout_width="0dp"
        android:layout_weight="1"
        />
    <Button 
        android:text="3" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
</TableRow>

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

    <Button 
        android:text="4" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
    <Button 
        android:text="5" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
    <Button 
        android:text="6" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
</TableRow>

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

    <Button 
        android:text="7" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
    <Button 
        android:text="8" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
    <Button 
        android:text="9" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />
</TableRow>

<TableRow 
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    >        
    <Button 
        android:text="10" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />        
</TableRow>

<TableRow 
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    >        
    <Button 
        android:text="11" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />        
</TableRow>

<TableRow 
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    >        
    <Button 
        android:text="12" 
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        />        
</TableRow>