Как создать кнопку с закругленными углами и установить любой цвет программно во время выполнения - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь создать виджет button с закругленными углами, который я также могу изменить на любой цвет, который я хочу. В настоящее время я использую файл макета XML для создания закругленных углов. Проблема в том, что когда я меняю цвет, button возвращается к своей прямоугольной форме. Я бы хотел, чтобы он сохранил хотя бы закругленные углы.

Я не могу найти решение для этого, но любые идеи с благодарностью приняты. Возможно, это не возможно, но я подумал, что спросить. Суть в том, что я пытаюсь сделать это с удаленными представлениями как часть виджета, а НЕ в деятельности, которую легко сделать.

Рад рассмотреть любые варианты ...

Спасибо

RemoteViews views;
views = new RemoteViews(context.getPackageName(), R.layout.mycustomlayout);
views.setInt(R.id.widgetbutton,"setBackgroundColor", Color.parseColor(widgethexcolor));

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Сначала создайте файл ресурсов в папке для рисования, названный, например, bg_white_ounded.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/space5"/>
    <solid android:color="@android:color/white"/>
</shape>

затем в макет вашей кнопки добавьте:

android:background="@drawable/bg_white_rounded.xml"

PS: изменить требуемый размер космического радиуса.

0 голосов
/ 16 января 2019

Пожалуйста, проверьте это и выполните следующие действия: 1. Создайте файл формы в соответствии с вашими потребностями 2. Установите файл формы в качестве фона вашего виджета 3. Из вашего .java файла измените цвет в соответствии с требованиями.

bg_button_round_corners.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="#CBCBCB"/>   <!-- you can use any color you want-->
    <corners android:radius="10dp"/>
</shape>

Файл макета:

   <Button
      android:id="@+id/customButton"
      android:layout_width="match_parent"
      android:layout_height="56dp"
      android:textSize="12sp"
      android:layout_gravity="center"
      android:background="@drawable/bg_button_round_corners"/>

Файл активности:

   customButton= (Button) view.findViewById(R.id.customButton);
   int color = Color.parseColor("#00FFFF");
   ((GradientDrawable)circleColor.getBackground()).setColor(color);
0 голосов
/ 11 января 2019

Создайте файл ресурсов макета в папке для рисования и назовите его как android: background = "@ drawable / shape.xml" внутри свойств кнопки.

Вместо Градиента вы также можете использовать Solid *

Код для shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<corners
    android:radius="20dp"
    />

<gradient
    android:angle="45"
    android:centerX="35%"
    android:centerColor="#00d6a3"
    android:startColor="#9e9c97"
    android:endColor="#ffffff"
    android:type="linear"
    />
<size
    android:height="45dp"
    android:width="250dp"
    />
</shape>
...