今天突然发现写的一个布局,gridview中各个item没有居中显示,网上搜了一下发现很多人都问这个问题。
总结了一下,发现只有一种有效方法
1.在item的布局中组件中设置android:layout_gravity=”center_horizontal”,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/item_drama_result_cover"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/nocover1"/>
<TextView
android:id="@+id/item_drama_result_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="2"
android:ellipsize="end"
android:text="浮生若梦"
android:textSize="13sp"
android:textColor="@color/personal_black"/>
<TextView
android:id="@+id/drama_result_update_hint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="11sp"
android:textColor="@color/gray_text"/>
</LinearLayout>
2.这么设置imageview确实是居中了,但是想我这样imageview下面还有textview的时候,如果同样设置以后,textview的字也变成居中了,跟imageview并没有保持左对齐,这样看起来看别扭。于是还有另一种有效方法,直接在代码中设置居中,这样就不用担心图片和字的左对齐问题了
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
convertView.setLayoutParams(layoutParams);
这样直接在adapter中把convertView设置成居中以后,发现完美实现了gridview的item居中显示,对于convertView中多个控件的推荐用这种。