2011-12-19 4 views
4

にスタイルを適用すると、この画像は私が見られるように、自分のアプリケーションにlisviewのスタイルをしたいのAndroidのListView

Expected Output

です:list_item_normalため

コードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <gradient 
     android:centerColor="#E6E6E6" 
     android:endColor="#CCCCCC" 
     android:startColor="#FFFFFF" 
     android:angle="270"/> 
    <!-- 
     <gradient 
     android:startColor="#FF7500" 
     android:centerColor="#FFCC00" 
     android:endColor="#FF7500" 
     android:angle="270"/> 
    --> 

    <stroke 
     android:width="1dp" 
     android:color="#A0000000" /> 

    <padding 
     android:bottom="8dp" 
     android:left="5dp" 
     android:right="5dp" 
     android:top="8dp" /> 

    <corners android:radius="5dp" /> 

</shape> 

list_item_pressed.xmlためのコードは次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <gradient 
     android:centerColor="#E6E6E6" 
     android:endColor="#CCCCCC" 
     android:startColor="#FFFFFF" android:angle="270"/> 
    <!-- 
     <gradient android:startColor="#FF66CFE6" android:centerColor="#FF207FB9" 
     android:endColor="#FF0060B8" android:angle="270"/> 
    --> 

    <stroke 
     android:width="2dp" 
     android:color="#80000000" /> 

    <padding 
     android:bottom="8dp" 
     android:left="5dp" 
     android:right="5dp" 
     android:top="8dp" /> 

    <corners android:radius="7dp" /> 

</shape> 

list_item_pressed.xmlのためのコード:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <gradient 
     android:centerColor="#E6E6E6" 
     android:endColor="#CCCCCC" 
     android:startColor="#FFFFFF" android:angle="270"/> 
    <!-- 
     <gradient android:startColor="#FF66CFE6" android:centerColor="#FF207FB9" 
     android:endColor="#FF0060B8" android:angle="270"/> 
    --> 

    <stroke 
     android:width="2dp" 
     android:color="#80000000" /> 

    <padding 
     android:bottom="8dp" 
     android:left="5dp" 
     android:right="5dp" 
     android:top="8dp" /> 

    <corners android:radius="7dp" /> 

</shape> 

とlist_gradient.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true" 
      android:drawable="@drawable/list_item_pressed" /> 

    <item android:state_focused="true" 
      android:drawable="@drawable/list_item_selected" /> 

    <item android:drawable="@drawable/list_item_normal" /> 

</selector> 

と私は好きcustom listitemにこのスタイルを適用しています

<TextView 
    .../> 

<ImageView 
    ... /> 

と私はlisviewが持っているmain.xml:

<ListView 
    android:id="@+id/List" 
    style="@style/list_item_gradient" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:clickable="true" > 
</ListView> 

と下図のように、私は出力を取得しています:

current output

は、あなたがディザリングについて知っています..私が間違ってやっている何を言うことによって

おかげ Shruti

+0

私はリスト行のカスタムレイアウトで手を汚していました。私は、押された状態、選択された状態、通常状態(あなたのドロウアブルファイルに言及されているようなもの)のように必要なことをしました。また、デフォルトのレイアウトスタイルをlist_item_gradientに変更しました。私は振付師の警告に走っています。私はメインスレッドであまりにも多くの作業をしているかもしれません。これを回避するには何ができるのでしょうか? –

+0

メインスレッドの作業を減らすために、非同期タスクを使用してみてください。 – Shruti

+0

また、スタイルには親属性がないため、フォーラムの一部でも読んでいます。定義する方法は? –

答えて

5

を助けてください?これを確認してください:http://android.amberfog.com/?p=247。ここであなただけの1つのカスタム列を作成する必要があり、

  1. How to draw a smooth/dithered gradient on a canvas in Android
  2. Android view dithering

をとはい、私はあなたのLitsView用のカスタムアダプタを作成することをお勧め:

また、これらの質問をチェックxmlレイアウトファイルを作成し、背景イメージを一度適用します。

+0

もう少し説明してください...私はlistselectorを追加する必要がありますか? – Shruti

+0

私はあなたが選択したリストアイテムの色を変更することができないというカスタムアダプタのみを作成しました – Shruti

+0

@DroidShruti特定のリストアイテムに触れている間に "黄色"の画像が表示されると思いますか?このような場合はselector.xmlを作成して適用してください。 –

1

customAdapter を作成します。 list_item.xmlを作成し、その背景に希望の外観セットセレクタを与えます。 thats it。

+0

私はカスタムアダプターがうまくいきました。リスト項目を選択している間、最初の画像に示されているように色が変化しませんでした – Shruti