【问题标题】:Problems with android GridLayoutandroid GridLayout 的问题
【发布时间】:2014-06-18 02:03:58
【问题描述】:

我有两个关于 GridLayout 的问题。

  1. 为什么当我说要填充父级,而父级设置为匹配父级时,布局会延伸到手机之外?
  2. 为什么第三个文本视图(显示“日期”的那个)被淘汰了?预留和日期之间有一个很大的空格。

谢谢!

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/GridLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="2"
    android:rowCount="4"
    tools:context=".GridLayoutActivity" >

    <ImageView
        android:id="@+id/imgCabin1"
        android:layout_column="0"
        android:layout_row="0"
        android:layout_rowSpan="3"
        android:layout_height="248dp"
        android:scaleType="fitCenter"
        android:layout_width="200dp"
        android:src="@drawable/sky_beach" 
        android:background="#222222"/>

    <TextView
        android:id="@+id/txtCabint1Title"
        android:layout_width="fill_parent"
        android:layout_height="72sp"
        android:layout_column="1"
        android:layout_row="0"
        android:padding="10sp"
        android:text="Sky Beach"
        android:textSize="48sp" />

    <TextView
        android:id="@+id/txtCabinDesc"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_gravity="left"
        android:layout_row="1"
        android:maxLines="5"
        android:padding="10sp"
        android:singleLine="false"
        android:text="Dog friendly vacation rental cabin on a scenic mountain river"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/btnCabin1Reserve"
        android:layout_width="fill_parent"
        android:layout_height="60sp"
        android:background="#888888"
        android:gravity="left"
        android:layout_column="1"
        android:layout_row="2"
        android:text="Reserve"
        android:textSize="36sp" 
        android:padding="10sp"  />

    <TextView
        android:id="@+id/txtCabinDesc"
        android:layout_width="fill_parent"
        android:layout_height="60sp"
        android:layout_gravity="top"
        android:layout_column="1"
        android:layout_row="3"
        android:text="Date: "
        android:textSize="36sp" 
        android:padding="10sp"  />


</GridLayout>

【问题讨论】:

    标签: android android-layout multiline android-gridlayout fill-parent


    【解决方案1】:

    您为什么不使用相对布局并相对设置布局而不是使用网格视图。您的第二个问题是因为您正在一个接一个地设置网格行,因此在设置图像视图后它会设置您的文本视图 txtCabinDesc..尝试以下代码 sn-p 我试过了。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/GridLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="2"
    android:rowCount="4" >
    
    <ImageView
        android:id="@+id/imgCabin1"
        android:layout_column="0"
        android:layout_row="0"
        android:layout_rowSpan="3"
        android:layout_height="248dp"
        android:scaleType="fitCenter"
        android:layout_width="200dp"
        android:src="@drawable/ic_launcher" 
        android:background="#222222"/>
    
    <TextView
        android:id="@+id/txtCabint1Title"
        android:layout_width="match_parent"
        android:layout_toRightOf="@id/imgCabin1"
        android:layout_height="72sp"
        android:layout_column="1"
        android:layout_row="0"
        android:padding="10sp"
        android:text="Sky Beach"
        android:textSize="48sp" />
    
    <TextView
        android:id="@+id/txtCabinDesc"
        android:layout_width="match_parent"
        android:layout_toRightOf="@id/imgCabin1"
        android:layout_below="@id/txtCabint1Title"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_gravity="left"
        android:layout_row="1"
        android:maxLines="5"
        android:padding="10sp"
        android:singleLine="false"
        android:text="Dog friendly vacation rental cabin on a scenic mountain river"
        android:textSize="24sp" />
    
    <TextView
        android:id="@+id/btnCabin1Reserve"
        android:layout_width="match_parent"
        android:layout_toRightOf="@id/imgCabin1"
        android:layout_below="@id/txtCabinDesc"
        android:layout_height="60sp"
        android:background="#888888"
        android:gravity="left"
        android:layout_column="1"
        android:layout_row="2"
        android:text="Reserve"
        android:textSize="36sp" 
        android:padding="10sp"  />
    
    <TextView
        android:id="@+id/txtCabinDesc1"
        android:layout_width="match_parent"
        android:layout_toRightOf="@id/imgCabin1"
        android:layout_below="@id/btnCabin1Reserve"
        android:layout_height="60sp"
        android:layout_gravity="top"
        android:layout_column="1"
        android:layout_row="3"
        android:text="Date: "
        android:textSize="36sp" 
        android:padding="10sp"  />
    

    还要更改最后一个 textView 的 id,因为它与描述 textView 的 id 冲突。

    【讨论】:

    • 嘿,这行得通。我总是避免相对布局,但我可以看到它很有用。仍然是我不明白为什么我所做的事情不起作用的那些有趣的事情之一。似乎填充父级应该意味着填充父级,多行应该意味着多行,而gridview应该创造额外的空间。哦,好吧。
    • 当你必须相对设置你的小部件时,相对布局似乎是最好的布局。另外,不推荐使用 fillparent 属性并使用匹配父项
    猜你喜欢
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2014-03-19
    相关资源
    最近更新 更多