天天看點

android中ListView的顯示效果

ListView中的每一項的顯示情況,比如排列和在每項中加圖檔等情況,隻要使用各種Layout和自定義Adapter就可以了,這類文章網上很多,不多說了。

關于ListView中的每一項,預設選中的時候是黃色,點選就會進入,但往往我們覺得這種顯示方式不甚美觀,Android提供了自定義每個item的顯示顔色配置方法:——》selector

首先,在values檔案夾中建立一個colors.xml檔案,存儲各種配色:

android中ListView的顯示效果

<?xml version="1.0"encoding="utf-8"?>

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

<!--   <item -->

<!--       android:state_selected="false"-->

<!--       android:state_pressed="false"-->

<!--       android:drawable="@drawable/white"-->

<!--   /> -->

    <item

       android:state_pressed="true"

       android:drawable="@drawable/yellow"

    />

    <item

       android:state_selected="true"

       android:drawable="@drawable/white"

    />

</selector>

每種item表示一種顯示情況,android:state_selected表示該項被選中的時候顯示的顔色或圖檔,android:state_pressed表示該項被按下的時候顯示的顔色或圖檔,若均為false則表示該項在不被按下也不被選中時候的顔色或圖檔。

該檔案在可以了解為一個圖檔檔案,放在drawable檔案夾下:

android中ListView的顯示效果

在自定義的Adapter的getView()方法中,添加一句:

convertView.setBackgroundResource(R.drawable.daibanbg);

這裡要注意的是,android:drawable中@後面是drawable還是color取決于在colors.xml中的定義,如:

<resources>

    <drawable name="red">#7f00</drawable>

    <drawable name="blue">#770000ff</drawable>

    <drawable name="green">#7700ff00</drawable>

    <drawable name="yellow">#77ffff00</drawable>

    <drawable name="screen_background_black">#ff000000</drawable>

    <drawable name="translucent_background">#e0000000</drawable>

    <drawable name="transparent_background">#00000000</drawable>

    <drawable name="darkgray">#808080FF</drawable>

    <drawable name="white">#FFFFFFFF</drawable>

    <drawable name="silver">#00ffffff</drawable>   <!-- 透明色 -->

    <color name="solid_red">#f00</color>

    <color name="solid_blue">#0000ff</color>

    <color name="solid_green">#f0f0</color>

    <color name="solid_yellow">#ffffff00</color>

</resources>

我這裡顯示的是選中是每項的背景為白色,按下後顯示為黃色,平時就預設背景色

android中ListView的顯示效果

清單中的分隔線也可以自己定義,可以顯示顔色或者圖像

<ListView

    android:id="@+id/list"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:layout_marginTop="10dp"

    android:divider="#FFCC00"

    android:dividerHeight="1px"

  />

android中ListView的顯示效果

如果dividerHeight為0px的時候就代表沒有分隔線:

android中ListView的顯示效果

繼續閱讀