舍入列表视图的顶部和底部角落

时间:2016-02-23 13:23:19

标签: android xml android-layout listview

这是我的问题,我似乎无法绕过listview底部的边缘。

LIST VIEW EXCEEDS EDGES

我尝试了几种方法,你可以为backgroup资源创建一个形状,尝试编程的ally和布局xml,但它根本不做任何事情。

就像我做错了我怀疑,因为我熟悉形状,或者其他东西干扰了我的尝试。

无论哪种方式,我需要帮助就是我所得到的。

这里有一些构成你正在看的内容的xml。

这构成了实际的对话框。 (settings_dialog.xml)

<?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="match_parent"
                android:background="#BB000000"
                android:gravity="center">

    <ImageView
        style="@style/CloseButtonStyle"
        android:id="@+id/ivCancel_SD"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:layout_above="@+id/rlContainer_SD"
        android:layout_toRightOf="@+id/rlContainer_SD"
        android:layout_toEndOf="@+id/rlContainer_SD"/>

    <RelativeLayout
        style="@style/SettingsDialogStyle"
        android:id="@+id/rlContainer_SD"
        android:layout_width="800dp"
        android:layout_height="600dp"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

        <TextView
            style="@style/SettingsHeaderStyle"
            android:id="@+id/tvSettingsLabel_SD"
            android:layout_width="330dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:text="@string/sd_header_label"/>


               <ListView
        style="@style/SettingsListStyle"
        android:id="@+id/lvOptions_SD"
        android:background="@drawable/bg_listview_corners"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tvSettingsLabel_SD"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"/>

    </RelativeLayout>

</RelativeLayout>

这位于我的styles.xml中,其中包含一些与此无关的其他内容。

<style name="SettingsListStyle">
    <item name="android:divider">@color/table_divider_color</item>
    <item name="android:dividerHeight">1dp</item>
    <item name="android:paddingTop">40dp</item>
    <item name="android:paddingLeft">6dp</item>
    <item name="android:paddingRight">6dp</item>
    <item name="android:paddingBottom">2dp</item>
</style>

这构成了list_item。 (settings_list_item.xml)

<?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="80dp"
                android:padding="5dp">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            style="@style/SettingsOptionNameStyle"
            android:id="@+id/tvOptionName_SLI"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>

        <TextView
            style="@style/SettingsOptionDescStyle"
            android:id="@+id/tvOptionDesc_SLI"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>

    </LinearLayout>


</RelativeLayout>

这是我过去尝试过的边缘形状。

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/bg_listview_corners" android:shape="rectangle"> 
    <corners android:radius="30dp" />
</shape> 

我也试过这件作品。

 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/bg_listview_corners" android:shape="rectangle"> 
        <corners 
         android:bottomRightRadius="30dp" 
         android:bottomLeftRadius="30dp" />
</shape> 

这是我认为您在途中需要帮助我的所有信息。 如果我错过了一些信息,或者您只是有疑问,请不要犹豫。

更新1: 我发现它只是塑造了listview的容器,而不是listview本身 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

  • 你可以增加填充(paddingRight,paddingLeft和paddingBottom)

    <style name="SettingsListStyle">
    <item name="android:divider">@color/table_divider_color</item>
    <item name="android:dividerHeight">1dp</item>
    <item name="android:paddingTop">40dp</item>
    <item name="android:paddingLeft">7dp</item>
    <item name="android:paddingRight">7dp</item>
    <item name="android:paddingBottom">3dp</item>
    

  • 或在listview上使用蒙版背景(例如使用9-Patch作为蒙版的Post,或者您可以使用&#34; bg_listview_corners.xml&#34;背景作为蒙版)< / p>

答案 1 :(得分:0)

您可以在drawable文件夹中创建一个名为custom_list.xml的自定义背景可绘制选择器文件,其中包含此代码

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/list_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/list_focused" android:state_focused="true"/>
<item android:drawable="@drawable/list_default"/>

</selector>

然后在您的drawable文件夹中创建另一个文件list_default.xml,其中包含此代码

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<gradient
    android:angle="270"
    android:endColor="#1c95a0"
    android:startColor="#1c95a0" />
<corners android:radius="5dip" />

</shape>

最后将列表视图的背景属性设置为

android:background="@drawable/custom_list"

答案 2 :(得分:0)

按照@Sally的建议使用掩码结束,这是我改变它的方式。

<?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="match_parent"
                android:background="#BB000000"
                android:gravity="center">

    <ImageView
        style="@style/CloseButtonStyle"
        android:id="@+id/ivCancel_SD"
        android:layout_width="75dp"
        android:layout_height="75dp"
        android:layout_above="@+id/rlContainer_SD"
        android:layout_toRightOf="@+id/rlContainer_SD"
        android:layout_toEndOf="@+id/rlContainer_SD"/>

    <RelativeLayout
        style="@style/SettingsDialogStyle"
        android:id="@+id/rlContainer_SD"
        android:layout_width="800dp"
        android:layout_height="600dp"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

        <TextView
            style="@style/SettingsHeaderStyle"
            android:id="@+id/tvSettingsLabel_SD"
            android:layout_width="330dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:text="@string/sd_header_label"/>


        <ListView
            style="@style/SettingsListStyle"
            android:id="@+id/lvOptions_SD"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/tvSettingsLabel_SD"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"/>

    </RelativeLayout>

        <ImageView
            android:layout_width="800dp"
            android:layout_height="600dp"
            android:layout_centerVertical="true"
            android:background="@drawable/bg_listview_corners"/>

</RelativeLayout>

我在与容器匹配的相对布局之上添加了ImageView。 这是我用于屏蔽布局的drawable。(bg_listview_corners.xml)

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item>
        <shape android:shape="rectangle" >
            <stroke
                android:width="12dp"
                android:color="@color/app_night_sky_color" />
            <padding android:left="6px"
            android:top="6px"
            android:right="6px"
            android:bottom="6px"/>

            <corners android:radius="30dp" />
        </shape>
    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" >

            <stroke
                android:width="6dp"
                android:color="@color/popup_bg_color" />

            <corners android:radius="30dp" />
        </shape>
    </item>
</layer-list>