我有一个奇怪的问题。我的自定义列表视图的分隔线(实际上是在项目布局底部设置为高度1dp的线性布局)被绘制为最后一项(在标题之前或导航抽屉末尾)的两倍高度。
这就是它的外观
这是我的listview项目布局XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listItem">
<LinearLayout
android:id="@+id/itemLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:orientation="vertical"
android:layout_marginTop="0dp"
android:background="@android:color/transparent"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="55dp"
android:background="@drawable/nav_drawer_bg"
android:id="@+id/itemClickable"
android:paddingLeft="10dp">
<ImageView
android:id="@+id/drawer_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/drawer_itemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#ffffff"
android:layout_gravity="center_vertical"
android:background="@android:color/transparent" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="2dp"
android:layout_gravity="bottom"
android:background="@drawable/border_bottom_header"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"></LinearLayout>
</LinearLayout>
</RelativeLayout>
这是我的listview标题XML文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listItemHeader">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/itemHeader"
android:background="@color/darkgray"
tools:ignore="UselessParent"
android:layout_marginTop="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/headerText"
android:layout_gravity="center_vertical"
android:textColor="#ffeaeaea"
android:paddingLeft="5dp"
android:paddingTop="2dp"
android:paddingBottom="3dp" />
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="2dp"
android:background="@drawable/border_bottom_header"></LinearLayout>
</LinearLayout>
</RelativeLayout>
最后这是我的后台xml文件(用于分隔符布局)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<gradient
android:startColor="#474747"
android:centerColor="#5a5a5a"
android:endColor="#474747"
/>
<corners
android:radius="4dp"
/>
<size
android:height="3dp"/>
</shape>
任何人都可以帮我解决这个问题,我对此感到很困惑,不知道从哪里开始。我感谢任何帮助。
编辑:activity_main.xml,其中包含listview
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- As the main content view, the view below consumes the entire
space available using match_parent in both dimensions. -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- android:layout_gravity="start" tells DrawerLayout to treat
this as a sliding drawer on the left side for left-to-right
languages and on the right side for right-to-left languages.
The drawer is given a fixed width in dp and extends the full height of
the container. A solid background is used for contrast
with the content view. -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#ff1a1a1a"
android:scrollingCache="true"
android:scrollbars="none"/>
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:0)
我发现了什么问题。我在每个listview项的顶部和底部添加了1dp边距,并将分隔符的大小减小到1dp。似乎1dp的分隔线与相邻的listview项重叠,因此最后的项看起来更大,因为最后一项也没有重叠它。因此,考虑到边距,布局文件中的一个小变化解决了这个问题。