在GridView中使用setGravity()

时间:2016-12-01 12:39:12

标签: android android-layout gridview layout-gravity android-gravity

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

android:gravity

  

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

     
    

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

  

setGravity(int gravity)

  

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

     
    

gravity int :应用于此网格子项的重力

  

我试图将this question中提到的最后一行居中,但我无法得到它。

因此,我尝试了解android:gravitysetGravity()的使用情况。

我尝试了这段代码。

<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="none"

如果更改了stretchMode="columnWidth",就会发生这种情况

stretchMode="columnWidth"

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

然后设置引力的用途是什么?

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

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

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

我尝试设置layout_width="wrap_content"&amp;将我的GridView放在

  • LinearLayout并设置layout_gravity:center
  • RelativeLayout并设置layout_centerInParent=true

两种情况均无效。

我无法使用TableLayout,因为我需要在滚动到底部时加载更多数据,因此我需要设置OnScrollListener

提前致谢

1 个答案:

答案 0 :(得分:1)

GridView放入RelativeLayout,然后将GridView的{​​{1}}媒体资源设为layout_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> 可让您更好地控制孩子的位置。

UpDate:

尝试更改这两个属性

RelativeLayout

如果您添加android:stretchMode="columnWidth" android:numColumns="2" GridView

,请删除此媒体资源