2012-09-09 41 views
1

我有一个ListView它有两列,我想要的是中心ListViewLinerlayout。这里是ListView的布局代码。如何在一个LinearLayout在一个ListView居中android

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" > 
    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:id="@+id/mylist"> 
    </ListView> 
</LinearLayout> 

这里是的ListView

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:id="@+id/prayLabel" 
     android:layout_width="100dip" 
     android:layout_height="wrap_content" /> 
    <TextView 
     android:id="@+id/prayValue" 
     android:layout_width="100dip" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

虽然我ListView个别项目的布局出现垂直居中,但它没有出现水平居中作为其宽度横跨的整个宽度屏幕。我想我在layout_width的所有位置使用wrap_content,其宽度不应该跨越屏幕/布局的整个宽度?

感谢

+0

添加此在你的第二个xml'android:gravity =“center”'在线性布局 – MAC

+0

@ gtumca-MAC中添加了它,但它没有任何区别:(。 – Jawed

回答

3

我将它包装在一个RelativeLayout为simplicity-我也为此努力奋斗,并最终在简单的布局,这样做**:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

     <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

      <!-- Note the 'centre in parent' tag below --> 

      <ListView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:id="@+id/mylist"/> 

     </RelativeLayout> 

    </LinearLayout> 

**免责声明:本模式可以成为昂贵的更复杂的意见,但LinearLayout>RelativeLayout>ListView层次结构是好的。

+0

那么尽管它确实在ListView中的内容居中, ListView的宽度保持不变,即跨越布局的整个宽度,这是我不想要的,我希望ListView的宽度减少到行的最大宽度(即在我的情况下为200) – Jawed

+0

你有没有试着将''''''''''''''''''''''''把''''''''''''''''将'''''''''包装到'''''wrap_content'''上?''''我总是以一种试验和错误的方式。如果这不起作用,那么在将RelativeLayout设置为wrap_content之后,将列表视图设置为''''match_parent''',即匹配RelativeLayout的宽度。 – OceanLife

0

您可以在您的线性布局中使用android:weightSum,然后用空的观点一左一右中心您ListView如下:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="1"> 
    <View 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".05"/> 
    <ListView 
     android:id="@+id/list_view" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".9" 
     android:paddingLeft="4dp" 
     android:paddingRight="4dp" /> 
    <View 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".05"/> 
</LinearLayout> 

当然,你可以调整权重,仅仅指刚确保Views设定为相同所以ListView居中。

相关问题