如何指定Android布局视图元素的背景“颜色”应该是渐变(以特定角度)?
我希望在XML中指定它,即不在运行时。最好作为一种风格,我可以应用style
属性的任何布局?
答案 0 :(得分:81)
在gradient.xml
中创建/res/drawable
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFFFF"
android:endColor="#00000000"
android:angle="45"/>
</shape>
以及main.xml
中的/res/layout
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gradient"
>
</LinearLayout>
您可以通过替换android:angle
和android:startColor
android:endColor
值和开始/结束颜色来指定角度
答案 1 :(得分:9)
您可以使用以下内容:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#A1A1A1"
android:centerColor="#BDBDBD"
android:endColor="#A4A4A4"
android:angle="-90" />
</shape>
构建渐变(您可以选择喜欢的颜色)。把它放在drawable中,你有自己的形状用作背景:android:background="@drawable/the_name_of_your_xml"
答案 2 :(得分:5)
这就是我设置渐变样式的方法。希望这可以帮助。但我已将它用于textview。你必须做一些改变以适应你的布局背景。
Shader textShader = new LinearGradient(0, 0, 0, 20, new int[] {
Color.WHITE, getResources().getColor(//some color),
getResources().getColor(//some color), Color.WHITE },
new float[] { 0.25f,0.50f,0.75f, 1 }, TileMode.CLAMP);
textview.getPaint().setShader(textShader);