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

Как добавить эффект градиента в фоновый цвет TextView в ListView?

Относительно этих вопросов:

Добавление эффекта градиента в TextView в ListView генерирует NPE

и

Как изменить цвет и шрифт в ListView

Мне хотелось бы узнать, как установить фон TextView в ListView с эффектом градиента?

В одном из вопросов выше я закончил тем, что эффект градиента добавлен в текст в TextView. И после перехода по второму вопросу, кажется, я могу добавить только фиксированные цвета фона.

Как мне добавить добавление градиента в фоновый режим? Должен ли я сделать CustomListAdapter?

4b9b3361

Ответ 1

Вам просто нужно создать ресурс с возможностью рисования (см. пример ниже) и добавить его в макет, созданный для вашего ListItem.

Выбираемый (в папке res\drawable - назовите его что угодно - listgrad.xml для ex) может выглядеть так:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
      android:startColor="@color/gradient_start"
      android:endColor="@color/gradient_end"
      android:angle="-270" /> 
</shape>

Вы добавили бы его в макет для своего элемента списка (файл layout.xml, который вы определяете для этого), как этот фрагмент кода:

<TextView
        android:id="@+id/ranking_order"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/list_grad"
        />
...

Ответ 2

Как только вы создадите градиент, вы можете применить его ко всему, что угодно, пусть это будет textView, макет или кнопка.

Чтобы понять, как создавать и использовать градиент, обратитесь эта ссылка.

Чтобы создать градиент, вам нужно добавить его в каталог ниже

введите описание изображения здесь

Код для градиента будет примерно таким:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:startColor="#ff2d9a59"
                android:centerColor="#ff42959a"
                android:endColor="#ff23729a"
                android:angle="135"/>
        </shape>
    </item>
</selector>

Ответ 3

Реферат отсюда: Как создать ListView с закругленными углами в Android? (Я нашел это очень полезным.)

Добавьте следующее в файл (скажем gradient.xml), а затем поместите его в каталог (res/drawable/gradient.xml).

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <gradient 
         android:startColor="#SomeGradientBeginColor"
         android:endColor="#SomeGradientEndColor" 
         android:angle="270"/> 

    <corners 
         android:bottomRightRadius="7dp" 
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp" 
         android:topRightRadius="7dp"/> 
</shape> 

Как только вы закончите создание этого файла, просто установите фон одним из следующих способов:

Через код: listView.setBackgroundResource(R.drawable.customshape);

Через XML просто добавьте в контейнер следующий атрибут (например: LinearLayout или любые поля):

android:background="@drawable/customshape"