我尝试为View
添加阴影。特别是底部对齐的TabLayout
,默认情况下没有阴影。
我创建了一个自定义OutlineProvider
并将其应用于TabLayout
,如此
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabLayout tabs = (TabLayout)findViewById(R.id.tabs);
tabs.setOutlineProvider(new ViewOutlineProviderTabs());
}
public class ViewOutlineProviderTabs extends ViewOutlineProvider {
@Override
public void getOutline(View view, Outline outline) {
//create a rectangular outline
outline.setRect(0,-25,view.getWidth(),view.getHeight());
}
}
阴影看起来接近正确,但有一些额外的,无法解释的线
外观如何:
应该如何看待:
顶部图像不是平滑渐变,看起来有两条线。
有没有办法解决这个怪异的渲染?或者另一种方法是将阴影添加到底部对齐TabLayout
?
答案 0 :(得分:0)
这是我能想到的最好的。我删除了自定义OutlineProvider
。相反,我创建了一个这样的drawable:
<!--upshadow.xml-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item >
<shape>
<gradient android:angle="90"
android:endColor="#00000000" android:startColor="#45000000"
android:centerY="25%"
android:centerColor="#25000000"/>
</shape>
</item>
</layer-list>
</item>
</selector>
然后我在View
上方创建了TabLayout
,并以阴影作为背景
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabs"
android:layout_alignParentBottom="true"
/>
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_above="@id/tabs"
android:background="@drawable/upshadow"
/>
它看起来基本上是股票并且没有引起明显的问题。像ScrollView
s这样的东西甚至会像在普通阴影中一样呈现在它下面。