尽管wrap_content,GridView填充父级

时间:2012-06-23 12:20:55

标签: android android-layout

我在我的活动的主要布局xml中有这样的gridlayout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/parentLayout"
    android:layout_gravity="right">

    <GridView 
        android:id="@+id/gridview"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:background="#AAAAAA"
        android:columnWidth="90dp"
        android:numColumns="3"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="none"
        />

</LinearLayout>

我通过夸大以下内容填充6个图标:

<?xml version="1.0" encoding="utf-8"?>
<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/searchIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="@string/searchIcon"/>

我想要的是gridlayout在线性布局中右对齐,它只是包装其内容。我正在测试它,给它一个不同的彩色背景。 layout_height =“wrap_content”工作正常,但宽度似乎没有效果。结果如下:

Screenshot of wrap_content not working as I expect

有什么想法吗?

提前致谢, 斯蒂芬

2 个答案:

答案 0 :(得分:0)

在LinearLayout中使用android:gravity="right"而不是LinearLayout ..............

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

    android:gravity="right"> //<-----------------------
  • android:gravity设置其使用的View内容的重力 上。
  • android:layout_gravity设置视图或布局的重力 父节点。

进行测试

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

    android:gravity="right">

    <TextView android:id="@+id/gridview" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:background="#AAAAAA"
        android:text="ewewqe" />

</LinearLayout>

也看到这不是答案,但请参阅

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:id="@+id/parentLayout"
    android:layout_gravity="right"
    android:gravity="right" android:weightSum="1">

    <GridView
        android:id="@+id/gridview"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:background="#AAAAAA"
        android:columnWidth="90dp"
        android:numColumns="3"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="none"
        android:layout_weight=".5" />

</LinearLayout>

答案 1 :(得分:0)

在GridView中插入android:gravity="right"

<GridView 
  ......
  .....
  android:gravity="right" />