1

我无法理解GridView的android:gravitysetGravity()的使用。

android:gravity

指定每个单元格内的重力。

center_horizo​​ntal - 将对象放置在其容器的水平中心,不改变其大小。

setGravity(int gravity)

设置此网格的重力。Gravity 描述了子视图如何水平对齐。默认为 Gravity.LEFT

Gravity int : 应用到这个网格的孩子的重力

我正在尝试使最后一行居中,如本问题中所述,但我无法得到它。

所以,我试图理解android:gravityand的使用setGravity()

我试过这段代码。

<GridView
     android:id="@+id/grid_view"
     android:stretchMode="none"
     android:numColumns="auto_fit"
     android:columnWidth="140dp"
     android:gravity="right"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />

它的子视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:id="@+id/chapter_item_layout"
    android:minHeight="120dp"
    android:background="@color/red">

    <ImageView
        android:id="@+id/thumbnail_image"
        android:layout_width="68dp"
        android:layout_height="68dp"
        android:scaleType="fitXY"
        android:src="@drawable/icon" />

    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textSize="16sp"
        android:textColor="@color/black"
        android:maxLines="2"
        android:ellipsize="end"
        android:id="@+id/title" />

</LinearLayout>

它是这样来的

拉伸模式=

如果改变了stretchMode="columnWidth"它就会像这样

拉伸模式=

  • 第一个图像表示子行未正确对齐。
  • 第二张图片表示孩子内部的内容没有正确对齐

那么设置重力有什么用呢?

我试过了gridView.setGravity(Gravity.CENTER)

我需要在 GridView 中显示动态项目。

如果我有 3 个项目,如何在中心显示第 3 个项目?

我尝试设置layout_width="wrap_content"并将我的 GridView 放在里面

  • 线性布局和设置layout_gravity:center
  • 相对布局和设置layout_centerInParent=true

两种情况都没有奏效。

我不能使用TableLayout,因为我需要在滚动到底部时加载更多数据,所以我需要设置OnScrollListener

提前致谢

4

1 回答 1

1

把你的GridView里面 aRelativeLayout然后设置GridViewlayout_centerInParent属性为true.

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

    <GridView
            android:id="@+id/grid_view"
            android:stretchMode="columnWidth"
            android:numColumns="2"
            android:columnWidth="140dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerInParent="true" />

</RelativeLayout>

因为 :

RelativeLayout让您更好地控制孩子的位置。

更新 :

尝试改变这两个属性

android:stretchMode="columnWidth"
android:numColumns="2"

如果您在GridView android:gravity="right".

于 2016-12-01T12:46:21.003 回答