我有一个列表视图,显示扩展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也忽略了它。这有什么问题?
答案 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;完全相同。宽度,然后控制其位置(实际上控制项目的位置)。