1

在附加的 Gmail 应用截图中,ListView 的背景似乎在列表的右侧有一个垂直渐变,以与相邻的 View 分开。

我知道我可以在 xml 中定义 GradientDrawable,但是如何使用它来绘制渐变作为列表一侧的背景,同时将列表的其余部分绘制为浅灰色?

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
  <gradient
      android:startColor="#DDDDDD"
      android:endColor="#CCCCCC"
      android:angle="0" />
</shape>

在此处输入图像描述

4

4 回答 4

1

您只需将您创建的 cutsom 可绘制对象分配为 ListView 项目的背景属性。您可以在用于定义列表元素的 XML 布局中执行此操作。

例如,我使用此布局 (list_item.xml) 为我的列表项定义自定义布局(并指定渐变作为背景):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item_gray_gradient"
    android:orientation="horizontal"

...
于 2013-01-16T16:13:35.160 回答
1

您可以创建一个可绘制对象,并将其放置在包含列表项的布局的右侧。因此,您的渐变是视图中的一个单独组件,它将您的 ListView 分散到右侧的视图中。

像这样的伪代码

<LinearLayout
   android:orientation="horizontal"

   <ListView

   />

   <ImageView
        android:background="@drawable/gradient_drawable"
   >


>
于 2013-01-16T16:21:48.980 回答
0

我可以将可绘制对象设置为 95% 浅灰色,渐变在右半部分,使用以下命令:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
  <gradient
      android:startColor="#DDDDDD"
      android:centerColor="#DDDDDD"
      android:endColor="#CCCCCC"
      android:centerX=".95"
      android:centerY=".95"
      android:angle="0" />
</shape>
于 2013-01-16T16:33:23.347 回答
0

首先创建这个drawable(drawable/list_gray_gradient.xml)

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

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item>
      <shape>
            <solid android:color="#CCCCCC" />
      </shape>
</item>
<!-- This is the main color -->
<item android:right="10dp">
     <shape>
           <solid android:color="#DDDDDD" />
     </shape>
</item>

</layer-list>

然后将其用于您的list item layout: (layout/list_item.xml)

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"            
        android:background="@drawable/list_gray_gradient" >
</RelativeLayout>
于 2013-01-16T16:46:01.100 回答