Android碎片之间的影子分隔符

我有一个布局类似于平板电脑的ICS Gmail应用程序(左侧的ListFragment和右侧的内容),我想知道如何构build布局,使得两个片段之间有阴影分隔符(如Gmail应用程序,如下所示)

只要看看那个美丽的影子!

此外,因为这适用于这个问题,我怎样才能在活动列表项目的布局中有这个漂亮的三angular形/箭头标记? 我假设要实现这个,ListView本身必须位于阴影“图层” 之上 ,但我不知道如何创build它。

为了让每个人都知道(因为这个主题似乎缺乏信息),这是在各个列表行的视图的背景select器XML中实现的。 例如,这是主屏幕的布局,

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/list_row" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:background="@drawable/list_item_selector"> ...<!-- Rest of layout goes here --> </RelativeLayout> 

但是魔法来自list_item_selector

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/list_pressed" /> <item android:state_activated="true" android:drawable="@drawable/list_arrow_activated" /> <item android:drawable="@drawable/list_default" /> </selector> 

通过将它们定义为这样的9贴片可绘图,你可以让每个列表项在中间的那一行贡献它的宽度值,当它被激活时,那个阴影段将被一个箭头replace。 我希望这可以帮助别人,因为它确实帮助了我!

我正在做同样的事情,你想做的事情; 创造一个片段比另一个“更接近”的效果。

Roboguy的答案处理如何在列表项上使用白色箭头“select器”; 我会尝试更具体的阴影。 在Google IO 2011应用程序的源代码中可以看到使用背景select器的另一个很好的例子。 获得源代码后,查看fragment_dashboard.xml图标select器。

阴影分隔符是一个渐变,应用于视图的左侧。 有两个部分,

首先,“影子”本身:

RES / shadow_left.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="0" android:startColor="#55000000" android:endColor="#00000000" /> </shape> 

然后,实际将其应用于布局:

布局/ my_lower_layer

 <?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" > <View android:layout_width="20dp" android:layout_height="fill_parent" android:background="@drawable/fragment_shadow_left" /> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout> 

这必须做一个相对布局(据我所知)。 如果您使用的是线性布局,则可以将整个linearLayout包裹在相对布局中,然后添加渐变。

请注意,如果你这样做,梯度<View>必须在<LinearLayout>之下。 否则,渐变将在线性布局下绘制,所以您不会看到它。