【问题标题】:LinearLayout under GridView does not wrap contentGridView下的LinearLayout不包裹内容
【发布时间】:2016-09-12 05:31:57
【问题描述】:

我正在开发 Xamarin 应用,但我相信这个概念也适用于 android。

我想在 GridView 中显示我的 LinearLayout 包装项目,如下所示。但是并没有像我预期的那样呈现。

这里有什么我遗漏的吗?

代码:

Main.axml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<GridView
    android:minWidth="25px"
    android:minHeight="25px"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/gridViewHomeItems"
    android:horizontalSpacing="10px"
    android:verticalSpacing="10px"
  />

HomeItem.axml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="25px"
    android:minHeight="25px"
    android:padding="25px">
    <ImageView
        android:src="@android:drawable/ic_menu_gallery"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/homeItemImage" />
    <TextView
        android:text="Item Title"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/homeItemTitle" />
</LinearLayout>

【问题讨论】:

  • 你试过我的回答了吗?

标签: android android-layout gridview xamarin


【解决方案1】:

从属性中删除px。请改用spdp。同样的事情也适用于Grid View layout

Like this.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minHeight="25dp"
    android:minWidth="25dp"
    android:orientation="vertical"
    android:padding="25dp">

    <ImageView
        android:id="@+id/homeItemImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_btn_speak_now" />

    <TextView
        android:id="@+id/homeItemTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Item Title"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</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:minHeight="25dp"
    android:minWidth="25dp"
    android:orientation="vertical">


      <GridView
        android:id="@+id/gridViewHomeItems"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="96dp"
        android:horizontalSpacing="10dp"
        android:minHeight="25dp"
        android:minWidth="25dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp" />      



</LinearLayout>

【讨论】:

    【解决方案2】:

    尝试添加此属性。 Main.axml#GridView:

    android:columnWidth="96dp"
    android:numColumns="auto_fit"
    

    HomeItem.axml(#ImageView 和#TextView):

    android:layout_centerHorizontal="true"
    

    【讨论】:

      【解决方案3】:

      在您的布局中尝试以下代码。

      <LinearLayout 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"
            android:orientation="vertical"
          >
      
          <GridView
               android:numColumns="auto_fit"
               android:gravity="center"
               android:columnWidth="100dp"
               android:stretchMode="columnWidth"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:id="@+id/gridViewHomeItems"
               />
      
      </LinearLayout>
      

      如下更改您的自定义布局:

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:minHeight="25dp"
                    android:minWidth="25dp"
                    android:orientation="vertical"
                    android:padding="10dp">
      
          <ImageView
              android:id="@+id/homeItemImage"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:src="@android:drawable/ic_menu_gallery"/>
      
          <TextView
              android:id="@+id/homeItemTitle"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="Item Title"
              android:textAppearance="?android:attr/textAppearanceMedium"/>
      </LinearLayout>
      

      另外,请确保根据 Android 标准使用 dp 而不是 px

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-22
        • 1970-01-01
        • 2021-08-27
        • 2014-07-30
        • 1970-01-01
        • 2018-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多