Как изменить цвет на ресурс, который можно извлечь из java [duplicate]

Вам не нужно вводить $ scope, $ http ..

app.controller('MainController', function($scope, $http) { $scope.fetchData = function(_city){
  $http.get("../api/AllPlaces?filter[where][placeCity]="+ _city)
  .then(function(response) {
      $scope.Data = response.data;
    }); } });
48
задан neteinstein 11 May 2011 в 12:04
поделиться

8 ответов

Теперь я создаю Drawable, как один предварительный компилятор, так как я не мог изменить цвет ни на чем, кроме черного, даже после того, как попробовал hex или описан ниже.

Новый код :

ShapeDrawable footerBackground = new ShapeDrawable();

// The corners are ordered top-left, top-right, bottom-right,
// bottom-left. For each corner, the array contains 2 values, [X_radius,
// Y_radius]
float[] radii = new float[8];
radii[0] = activity.getResources().getDimension(R.dimen.footer_corners);
radii[1] = activity.getResources().getDimension(R.dimen.footer_corners);

radii[2] = activity.getResources().getDimension(R.dimen.footer_corners);
radii[3] = activity.getResources().getDimension(R.dimen.footer_corners);

footerBackground.setShape(new RoundRectShape(radii, null, null));

int color = ((Application) activity.getApplication()).getColor();

footerBackground.getPaint().setColor(color);

views.setBackgroundDrawable(footerBackground);

В любом случае это исправление .. решение для первого вопроса - это то, что я действительно ищу! Я буду признателен за любую помощь, конечно!

41
ответ дан neteinstein 21 August 2018 в 17:42
поделиться
  • 1
    Я считаю, что использование метода Shape Drawable для создания закругленных углов является лучшим решением, чем использование метода округлого угла Gradient Drawable. Кажется, что есть ошибка с Gradient Drawable, в результате чего некоторые углы не закруглены (вызывающая кнопка появляется подрезанной), когда приложение запускается, а экран дрожит один раз. Shape Drawable rounded corner работает на 100% для меня. – Zhang 10 June 2015 в 10:52
  • 2
    Спасибо, что спасли мое время. +1 голосовать за u. – Sagar Aghara 7 November 2017 в 08:15

R.drawable.library_cirecle

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/outerRectangle">
    <shape android:shape="oval" >
        <solid android:color="#FCD366" />

        <stroke
            android:width="1dp"
            android:color="@android:color/darker_gray" />
    </shape>
</item>

Изменить цвет в коде

Drawable tempDrawable = getResources().getDrawable(R.drawable.library_cirecle);
LayerDrawable bubble = (LayerDrawable) tempDrawable; (cast to root element in xml)
GradientDrawable solidColor = (GradientDrawable) bubble.findDrawableByLayerId(R.id.outerRectangle);
solidColor.setColor(colorToPaint);
imageView.setImageDrawable(tempDrawable);
3
ответ дан Adeel 21 August 2018 в 17:42
поделиться
  • 1
    Извините colorToPaint = getResources (). getColor () – Рома Иртов 12 May 2015 в 09:03

Установить цвет GradientDrawable Shape с использованием шестнадцатеричного кода / значения. Префикс префикса 0x - шестнадцатеричное значение.

    GradientDrawable shape =  new GradientDrawable();
    shape.setCornerRadius( 16 );
    shape.setColor(0xff33b5e5);
    ButtonStartSurvey.setBackground(shape);
-1
ответ дан Avinash Jadhav 21 August 2018 в 17:42
поделиться

Мое текущее исправление связано с возможностью рисования без опции цвета. Я помещаю его в макет рамки, а затем динамически устанавливаю фоновый цвет объекта макета рамки. По-прежнему это технически «исправление», но это самый простой вариант, на мой взгляд.

Файл макета:

<FrameLayout
    android:id="@+id/dateLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/SecondaryGreen">

    <ImageView
        android:id="@+id/dateBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/date_rectangle" />

</FrameLayout>

Дата Прямоугольный файл:

<shape xmlns:android="http://schemas.android.com/apk/res/android" ><size android:width="50dp" android:height="50dp"/><corners android:radius="5dp"/></shape>

Динамическое рендеринг:

mHolder.dateLayout.setBackgroundColor(getResources().getColor(R.color.SecondaryGreen));
-1
ответ дан Heinous Games 21 August 2018 в 17:42
поделиться
  • 1
    Извините ребята. Не понял, что вы не можете сформировать свою фигуру (т. Е. У моей фигуры закруглены углы, но цвет фона заполнен во всем пространстве, поэтому вы не можете сказать). Это исправление будет работать только для фигур, которые соответствуют рамке, а не круглым формам или прямоугольникам с закругленными углами. – Heinous Games 26 March 2015 в 17:02
GradientDrawable background = (GradientDrawable) titleTextView.getBackground();
background.setColor(getResources().getColor(R.color.some_color));

Метод setColor корректно запрашивает перерисовку элемента (если в xml вы использовали элемент & lt; shape & gt ;, он всегда будет GradientDrawable)

27
ответ дан James 21 August 2018 в 17:42
поделиться
  • 1
    Удостоверьтесь, что вы не используете его повторно в другом месте, прежде чем менять цвет на правильный. На API & lt; 21 выталкиваемый сохраняет его последний набор цветов. – Felipe Conde 22 April 2015 в 17:33
  • 2
    отлично, я хочу это, спасибо – Aditay Kaushal 28 December 2016 в 08:22

Это то, что я делаю в живых обоях, где я изменяю Drawable во время выполнения:

this.original = DrawableFactory.getDrawable(getContext().getResources(), objectName)[0];
originalBitmap = original.getBitmap();
copy = new BitmapDrawable(getContext().getResources(), original.getBitmap().copy(Bitmap.Config.ARGB_8888, true));
copyCanvas = new Canvas(copy.getBitmap());

Редактировать: Тип объявления:

public Bitmap originalBitmap;
public BitmapDrawable original;
public BitmapDrawable copy;
public Canvas copyCanvas;

Редактировать 2:

Попробуйте это в этом случае:

int color = (0xFF000000 | yourParsedColor)

Затем установите этот цвет.

1
ответ дан Kaj 21 August 2018 в 17:42
поделиться
  • 1
    Какой тип оригинал и копия? – neteinstein 9 May 2011 в 19:35
  • 2
    Даже с ним .. он только становится черным :-( – neteinstein 10 May 2011 в 12:01
  • 3
    Вздох, мне нужно будет отладить его в этом случае, но это, к сожалению, не то, что я хотел бы сделать :( – Kaj 10 May 2011 в 20:37

Существует более простой способ:

ShapeDrawable drawable = new ShapeDrawable();
drawable.getPaint().setColor(getResources().getColor(R.color.blue));
getActionBar().setBackgroundDrawable(drawable);
4
ответ дан kospol 21 August 2018 в 17:42
поделиться
  • 1
    Ваш ответ не имеет ничего общего с вопросом ... читайте внимательно. – neteinstein 13 November 2014 в 11:26
  • 2
    @NeTeInStEiN: У этого есть все, что связано с вопросом. Вы должны попробовать, прежде чем уволить его в следующий раз. – David Liu 6 April 2016 в 19:12
  • 3
    @kospol Вы могли бы лучше объяснить свой ответ – Oscar Méndez 28 February 2018 в 07:50

Посмотрите, работает ли что-то похожее на это:

TextView tv2 = (TextView) rl.findViewById(R.id.toggle_indicator);
/* Refer to http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html#mutate()
to understand why we need to mutate the GradientDrawable*/
GradientDrawable sd = (GradientDrawable) tv2.getBackground().mutate();
sd.setColor(0xff999999);
sd.invalidateSelf();

В моем случае у меня есть TextView с ShapeDrawable в качестве фона. Я хотел изменить его цвет и сумел сделать эту работу. Необязательно, tv2.getBackground () возвращает GradientDrawable вместо ShapeDrawable - об этом сообщается и в другом месте.

Изменить: о цвете попробуйте установить значение альфа-диапазона 0xff. Если вы заметили, что даже в моем коде выше функция setColor () принимает дополнительное шестнадцатеричное значение, отличное от обычного шестнадцатеричного значения RGB. Это для Alpha / Opacity. Если для этого установлено значение 0x00, то Drawable будет иметь черный цвет, независимо от RGB (при условии, что ваш фоновый цвет черный). 0x00 - полностью прозрачный объект & amp; 0xff - полностью непрозрачный объект.

33
ответ дан Saurabh Nanda 21 August 2018 в 17:42
поделиться
  • 1
    @NeTeInStEiN взгляните на объяснение черного цвета, которое я только что добавил. Если это полностью решает вашу проблему, я бы попросил вас выбрать это как правильный ответ. – Saurabh Nanda 16 December 2011 в 13:14
  • 2
  • 3
    спасибо @saurabh nanda .. вы решили мою проблему – sham.y 16 January 2015 в 16:11
  • 4
  • 5
    По-моему, это важная часть любого ответа. В моем случае ключевое значение имеет invalidateSelf (). – Krzysztof Kubicki 20 April 2018 в 14:35
Другие вопросы по тегам:

Похожие вопросы: