удаление фонового цвета вида в андроиде - PullRequest
31 голосов
/ 29 октября 2010

Удаление цвета фона в Android

Я установил backgroundColor в коде, подобном этому,

View.setBackgroundColor(0xFFFF0000);

Как удалить этот цвет фона для какого-либо события?

Ответы [ 5 ]

46 голосов
/ 29 октября 2010

Вы должны попробовать установить прозрачный цвет фона:

view.setBackgroundColor(0x00000000);

34 голосов
/ 21 января 2016

Вы можете использовать

View.setBackgroundColor(Color.TRANSPARENT);

или

View.setBackgroundColor(0);

Пожалуйста, помните, что почти все, что видно на экране, расширяет представление , например, Button, TextView, ImageView, любой вид макетов и т. Д. *

6 голосов
/ 04 мая 2017

Все ответы о настройке цвета на прозрачный будут работать технически . Но есть две проблемы с этими подходами:

  1. Вы получите overdraw .
  2. Есть лучший способ:

Если вы посмотрите, как работает View.setBackgroundColor(int color), вы увидите довольно простое решение:

/**
 * Sets the background color for this view.
 * @param color the color of the background
 */
@RemotableViewMethod
public void setBackgroundColor(@ColorInt int color) {
    if (mBackground instanceof ColorDrawable) {
        ((ColorDrawable) mBackground.mutate()).setColor(color);
        computeOpaqueFlags();
        mBackgroundResource = 0;
    } else {
        setBackground(new ColorDrawable(color));
    }
}

Цвет int просто преобразуется в ColorDrawable, а затем передается в setBackground(Drawable drawable). Таким образом, решение для удаления цвета фона состоит в том, чтобы просто обнулить фон с:

myView.setBackground(null);
4 голосов
/ 18 августа 2015

View.setBackgroundColor(0); тоже работает.Нет необходимости ставить все эти нули.

0 голосов
/ 28 сентября 2018

Выберите любой

View.setBackgroundColor(Color.TRANSPARENT);

    or

    View.setBackgroundColor(0x00000000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...