【问题标题】:Android XML Layout安卓 XML 布局
【发布时间】:2010-10-01 06:07:40
【问题描述】:

如何在我的 xml 文件中定义以下布局:

我希望你从我想在第一行和第二行显示 TextView1 的图像中得到它,TextView2 在左侧,TextView3 在右侧。

我如何定义这个布局?

我知道 layout_gravity 属性但没有成功,所以请分享你的代码

【问题讨论】:

    标签: android android-layout android-sdk-2.1


    【解决方案1】:

    我认为这可以解决您的问题

    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical">
        <TableLayout android:id="@+id/TableLayout01"
            android:layout_height="wrap_content" android:layout_width="fill_parent"
            android:stretchColumns="0">
            <TableRow android:id="@+id/TableRow01" android:layout_height="wrap_content"
                android:layout_width="fill_parent">
                <TextView android:text="@+id/TextView01" android:id="@+id/TextView01"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
    
    </TableRow>
            <TableRow android:id="@+id/TableRow02" android:layout_height="wrap_content"
                android:layout_width="fill_parent">
                <TextView android:text="@+id/TextView03" android:id="@+id/TextView03"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
                <TextView android:text="@+id/TextView04" android:id="@+id/TextView04"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
            </TableRow>
        </TableLayout>
    </LinearLayout>
    

    我认为新的解决方案很适合你

    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical">
    
    <TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_height="wrap_content" android:layout_width="fill_parent"></TextView>
        <LinearLayout android:id="@+id/LinearLayout02"
            android:layout_height="wrap_content" android:layout_width="fill_parent">
            <TextView android:text="@+id/TextView02" android:id="@+id/TextView02"
                android:layout_height="wrap_content" android:layout_width="fill_parent"
                android:layout_weight="1"></TextView>
            <TextView android:text="@+id/TextView03" android:id="@+id/TextView03"
                android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
    </LinearLayout>
    

    我现在得到了完美的一个

    <LinearLayout android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical">
    
    <TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginRight="15dip"></TextView>
        <LinearLayout android:id="@+id/LinearLayout02"
            android:layout_height="wrap_content" android:layout_width="fill_parent">
            <TextView android:text="@+id/TextView02" android:id="@+id/TextView02"
                android:layout_height="wrap_content" android:layout_width="fill_parent"
                android:layout_weight="1"></TextView>
            <TextView android:text="@+id/TextView03" android:id="@+id/TextView03"
                android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        </LinearLayout>
    </LinearLayout>
    

    【讨论】:

    • thanx,第 2 行很好,但第 1 行没有显示为 FULL_LENGTH,它实际上应该覆盖 FILL_PARENT(全区域)长度,Textview01 和 Textview03 显示的长度相同,只需检查图像我上传的地方清楚地表明 Textview01 具有完整长度
    • 检查我的图片的 TextView01 长度
    • 在我的新答案中,第一个 textview 大小将是满的,否则你必须定义我认为的大小
    【解决方案2】:

    例如,以下布局声明了您需要的内容:

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="1">
    <TableRow>
        <TextView
            android:text="@+id/TextView01"
            android:padding="3dip" />
    
    </TableRow>
    
    <TableRow>
        <TextView
            android:text="@+id/TextView02"
            android:padding="3dip" />
        <TextView
            android:text="@+id/TextView03"
            android:gravity="right"
            android:padding="3dip" />
    </TableRow>
    </TableLayout>
    

    【讨论】:

    • thanx,这会创建布局,在第二行,textview2 和 textview3 并排出现,而我希望 textview3 在第二行的右侧
    • 啊,我明白了。然后你可以用表格布局来做到这一点。我更新了代码。
    • 更新的布局代码给了我正确的解决方案,但是你犯了一个小错误,所以没有根据图像得到准确的解决方案,你的代码定义了 TextView3 具有最大区域的布局,而在我的图像,清楚地表明 TextView2 的面积最大
    • @Paresh 您可以根据需要定义宽度。
    【解决方案3】:

    布局文件如下所示:

     <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content" android:layout_height="wrap_content">
            <TextView android:text="@+id/TextView01" android:id="@+id/TextView01"
                android:layout_width="fill_parent" android:layout_height="wrap_content" />
    
            <TextView android:text="@+id/TextView02" android:id="@+id/TextView02"
                android:layout_below="@+id/TextView01" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_alignParentLeft="true" />
            <TextView android:text="@+id/TextView03" android:id="@+id/TextView03"
                android:layout_below="@+id/TextView01" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_alignParentRight="true" 
     android:layout_toRightOf="@+id/TextView02"/>
        </RelativeLayout>
    

    【讨论】:

    • 解决方案很好,但您使用两个布局对象。 Google 建议尽可能少使用布局 (developer.android.com/resources/articles/…)。但我不确定,如果我的答案是一种布局,但哪个是 TableLayout 更好或不是两种线性/相对布局。
    • 解决方案是正确的,但只看到第二行被划分为 2 个 Textview 的图像,因为 TextView2 具有最大的区域,而在其余区域中 TextView3 应该出现在右侧,我想你明白我想说的了
    • @uthark:那好吧。我对您的代码进行了更改。只需在文本视图 2 和 3 上添加 layout_alignParentRightLayout_alignParentLeft 属性。现在我在单一布局中实现了它。
    【解决方案4】:

    最后,我用 belox xml 代码实现了,它对我来说工作正常:

    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:padding="6dip"
      android:orientation="vertical">
    
     <LinearLayout android:id="@+id/LinearLayout01" 
                   android:layout_height="wrap_content" 
                   android:layout_width="fill_parent">
    
            <TextView 
                android:text="@+id/TextView01" 
                android:id="@+id/txtViewTop" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:textSize="18dip">
            </TextView>
     </LinearLayout>
    
     <LinearLayout 
            android:id="@+id/LinearLayout02" 
            android:layout_height="wrap_content" 
            android:layout_width="fill_parent"
            android:orientation="horizontal">
    
            <TextView 
                android:text="@+id/TextView02" 
                android:id="@+id/txtBottomLeft" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_weight="1"
                android:textSize="14dip">
            </TextView>
    
            <TextView 
                android:text="@+id/TextView03" 
                android:id="@+id/txtBottomRight" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_marginRight="6dip"
                android:textSize="14dip">
            </TextView>
    </LinearLayout>
    
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多