Подтвердить что ты не робот

Установить цвет фона в представлении макета на градиент в Android?

Как указать, что фоновый "цвет" элемента представления макета Android должен быть градиентом (под определенным углом)?

Я хочу указать это в XML, то есть не во время выполнения. Желательно, как стиль, который я могу применить к любому макету, который я хотел бы использовать с свойством style?

4b9b3361

Ответ 1

создать 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

Ответ 2

Вы можете использовать что-то вроде этого:

<?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 и voila, у вас есть собственная форма для использования в качестве фона: android:background="@drawable/the_name_of_your_xml"

Ответ 3

Вот как я установил стиль градиента. Надеюсь это поможет. Но я использовал его для 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);