RelativeLayout边距在listView中不起作用

时间:2014-01-15 16:42:04

标签: android android-layout android-listview android-fragments

我想知道为什么我要完成的工作不起作用

相对布局代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#649760" 
            android:layout_marginRight="30dp">

    <ImageView
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:background="#000000"/>

</RelativeLayout>

它如何在Android工作室预览中看起来:

Android studio preview. notice the white after the green

注意绿色的白色。

我还添加了list_view.xml以删除分隔符并控制背景颜色

 <?xml version="1.0" encoding="utf-8"?>
 <ListView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:dividerHeight="0dp"
      android:divider="@null"
      android:background="#ffffff">
 </ListView>

但我得到的东西(从我的手机上截屏)是绿色捕获所有剩余的宽度。

顺便说一句,我通过给list_view.xml填充来解决它,但我无法使用这样的解决方案,因为我在列表中有多个视图而且并非所有视图都应该获得这种边距

任何帮助将不胜感激,并将得到赞扬( - :

Screen capture, no white

1 个答案:

答案 0 :(得分:3)

当您查看文档时,ListView的行使用AbsListView.LayoutParamshttp://developer.android.com/reference/android/widget/AbsListView.LayoutParams.html

您可以注意到它们不是任何可用的保证金。

因此,解决方法是在单元格顶部添加另一个View,这应该可行:

<?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="wrap_content">
    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#649760"
            android:layout_marginRight="30dp">

        <ImageView
                android:layout_width="200dp"
                android:layout_height="50dp"
                android:background="#000000"/>

    </RelativeLayout>
</LinearLayout>

另一种解决方法是在“rootView”右侧添加一个View:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#649760">

    <View
            android:layout_width="30dp"
            android:layout_height="50dp"
            android:layout_alignParentRight="true"
            android:background="@color/white"/>

    <ImageView
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:background="#000000"/>

</RelativeLayout>

我知道这不是最好的表现,但这是我找到的唯一解决方法。