如何在列表视图中水平居中复合列表视图项?

时间:2013-11-04 18:48:36

标签: android android-listview

我有一个列表视图,显示扩展ArrayAdapter的自定义适配器中的项目。每个项目都是自定义布局,其中RelativeLayout是根视图。现在,我希望这个RelativeLayout在列表视图中水平居中,但我尝试的一切似乎都失败了。

这是我的自定义适配器getView方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = mInflater.inflate(R.layout.screens_listview_row, parent, false);
    return row;
}

这是文件screens_listview_row.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/root"
   .....
   android:layout_gravity="center_horizontal" >
</RelativeLayout>

首先,RelativeLayout中的布局参数似乎完全被忽略了,事实确实如此,因为我使用了inflate(R.layout.screens_listview_row, null),问题是this answer这样的问题。

所以现在唯一被忽略的是layout_gravity参数。我也试过layout_marginLeft(这个布局中的所有内容都是绝对大小的,所以我可以通过给出左边距来自己居中......)但是Android也忽略了它。这有什么问题?

2 个答案:

答案 0 :(得分:2)

尝试使用重力而不是layout_gravity(因为我知道重力是布局的内容)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/root"
   .....
   android:gravity="center_horizontal" >
</RelativeLayout>

答案 1 :(得分:0)

我没有找到如何控制ListView内部项目的位置,因此我将ListView宽度与项目&#39;完全相同。宽度,然后控制其位置(实际上控制项目的位置)。

相关问题