【发布时间】:2017-03-16 11:45:42
【问题描述】:
我创建了一个Android gradient drawable,顶部和底部是黑色的,中间是透明的:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:startColor="@android:color/black"
android:centerColor="@android:color/transparent"
android:endColor="@android:color/black"
android:angle="90"/>
</shape>
渲染的渐变如下所示:
如您所见,黑色部分扩散到屏幕的大部分区域。我希望黑色只显示在顶部和底部的一小部分。有没有办法让透明中心变大,或者让顶部和底部的黑色条纹变小?
我尝试使用链接的 GradientDrawable 文档中提到的其他一些 XML 属性,但它们似乎都不起作用。
【问题讨论】:
-
如果无法使用 xml 属性设置一种以上的颜色,您可以尝试扭曲可绘制对象,如果可能的话。否则以编程方式进行
-
@lelloman 我也愿意接受编程建议,尽管只使用 xml 可能会更容易。你有什么想法吗?
-
我认为你需要一个具有黑色 - 白色 - 黑色但距离不同的 LinearGradient,恐怕 GradientDrawable 不允许你调整颜色的位置,你会吗以编程方式使用自定义 Drawable?
-
@lelloman 感谢您的回复。我将需要尝试您的解决方案。只是指出以防止混淆,中间颜色是透明的,不是白色的。
-
您可以通过将两个渐变可绘制对象分层来使黑色部分成为视图高度的百分比。查看此要点gist.github.com/luksprog/4ac6e7550564b3823840d4a0943c8dd6 以获取示例(在上面的示例中,黑色部分将分别占据视图高度的 10%)。
标签: android xml gradient android-drawable