2015-05-13 2 views
0

Нужно разместить значок в центре овала с сплошным цветом. Он также должен позволять динамически изменять цвет оваля.как динамически менять цвет овальной формы

могли бы показать иконку на верхней/центр овала like это, Жереми Лаваль:

<?xml version="1.0" encoding="UTF-8" ?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> 
    <solid android:color="#42000000" /> 
    <padding android:left="8dp" android:top="8dp" 
     android:right="8dp" android:bottom="8dp" /> 
</shape> 

<FrameLayout 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:layout_gravity="center" 
    android:background="@drawable/aitemring"> 
    <ImageView 
    android:src="@drawable/coffee" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scaleType="center" /> 
</FrameLayout> 

вопрос, как изменить цвет овальной формы в коде (кеты говорят, получил новый цвет # ff0000, или какой-либо предопределенный цвет)?

+0

Похоже, уже есть хороший ответ на http://stackoverflow.com/questions/17823451/set-android-shape-color-programmatically –

+0

спасибо за указывают на это. Но здесь это не применяется. ShapeDrawable shapeDrawable = (ShapeDrawable) imageView.getBackground() ;, изменение фона изображения не работает. – lannyf

+0

Спасибо Дэвиду снова! Посмотрев снова, он должен работать, если взять фон из FrameLayout и изменить его цвет. – lannyf

ответ

0

Задумывались ли вы о простом определении двух чертежей и их замене, когда вам нужно изменить цвет?

Вы можете сделать слой-лист, чтобы создать свою фигуру и добавить значок.

+0

не так, как поможет обмен двумя чертежами. цвет случайный и будет выбран во время выполнения. – lannyf

0

С намеком Давида, это работает:

<?xml version="1.0" encoding="UTF-8" ?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> 
    <solid android:color="#42000000" /> 
    </shape> 


<ImageView 
    android:id="+id/theIcon" 
    android:src="@drawable/coffee" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scaleType="center" 
    android:background="@drawable/aitemring" /> 

GradientDrawable shapeDrawable = (GradientDrawable)theIcon.getBackground(); 
    shapeDrawable.setColor(0xffff0000); 
Смежные вопросы