2016-02-23 37 views
2

這是我的問題我似乎無法繞過我的listview底部的邊緣。舍入列表視圖的頂部和底部角落

LIST VIEW EXCEEDS EDGES

我已經試過了幾個,你的backgroup資源創建一個形狀的方法,試了一下方案的盟友,並在佈局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的容器,而不是列表視圖本身。
任何想法?

+0

試舉從底部和頂部更多的填充您的ListView – dgngulcan

+0

和你在哪裏設置的形狀? – Opiatefuchs

+0

@Opiatefuchs在settings_dialog.xml中的列表視圖 –

回答

0

你可以在你的繪製文件夾中創建名爲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> 

然後創建另一個文件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" 
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> 
    

  • 或使用面膜背景在列表視圖(這樣Post其使用9補丁作爲面膜,或者您可以使用面膜你的「bg_listview_corners.xml」背景)

+0

填充將無法正常工作,因爲它會混淆列表與其餘佈局的對齊。我最終用面具解決了它,謝謝你的提示。 –

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。 這是我用來掩蓋佈局的繪製。(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>