看起来很简单,顽固地说这个ListView不会居中(或者它的内容对我来说并不重要)。
这是活动布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.drobiazko.den.mobineon.MainActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:background="@drawable/bg">
<RelativeLayout android:id="@+id/clock_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!--<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_dark">-->
<com.drobiazko.den.mobineon.ListViewRowsHeight
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:overScrollMode="never"
android:scrollbars="none"
android:divider="@null"
android:listSelector="@android:color/transparent"
android:persistentDrawingCache="scrolling|animation"
android:background="@android:color/holo_green_dark" />
<!--</RelativeLayout>-->
</LinearLayout>
这是ListView的项目布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:id="@+id/btn_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/custom_btn_icon" />
<TextView android:id="@+id/btn_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/custom_btn_name" />
<TextView android:id="@+id/btn_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/custom_btn_count" />
</RelativeLayout>
我已尝试过所有内容(包括将布局简化为最大值),但它仍然无法使用。
有趣的是,第一个相对布局clock_container - 由于父级LinearLayout&#39; android:gravity="center_horizontal"
而居中,就像魅力一样。为什么不赢得ListView?
稍后添加:
受 FOliveira 的回答启发,我做了一些调查,发现:
一切正常,父母LinearLayout
有android:gravity="center_horizontal"
并尊重他的孩子。 ListView的子节点左对齐的原因是ListView尽管具有android:layout_width="wrap_content"
属性,但仍采用所有可能的宽度。
任何人都知道为什么会这样?
答案 0 :(得分:0)
首先,我将删除第一个线性布局,并仅保留相对布局作为父级。
将相对布局作为主要父级后,将CENTER_IN_PARENT
属性设置为true。
您所犯的错误是您将“线性布局”子项的重力设置为水平居中,这是正确的,但受此选项影响的唯一子项是“相对”布局本身。