Я абсолютный новичок в моно для Android .
Следующие кнопки создаются динамически и им назначается некоторый цвет фона.
Как назначить черную рамку с определенной толщиной для каждой кнопки? (см. Скриншот ниже).
Левое изображение - это то, как оно выглядит сейчас, а правое изображение - то, как оно должно выглядеть.
Я упомянул , это и , это на SO, но они не обеспечивают руководство, в котором я нуждался.
Любая помощь приветствуется ...
EDIT
Код для настройки фона кнопки:
int[] colors=GetColorForScrips(decimal.Parse(_result.Rows[i]["Change(%)"].ToString ()));
btn.SetBackgroundColor(Color.Rgb(colors[0],colors[1],colors[2]));
В GetColorForScrips () я передаю значение с плавающей запятой, на основе которого возвращаются компоненты RGB.
Примечание:
Я использую Mono для Android в качестве своей IDE, а не Eclipse .
Я назначаю цвет фона, используя вышеупомянутый фрагмент кода.
Если я использую btn.SetBackgroundDrawable(Resource.Drawable.Heatmap_Border);
, выдает ошибку, что can't convert from int to drawable
.
Если я использую btn.SetBackgroundResource(Resource.Drawable.Heatmap_Border);
, это дает мне полный черный экран, то есть кнопки можно нажимать, но не видно .
Предлагаемый вывод:
Как показано на правом изображении выше, каждая кнопка будет иметь определенный фон в зависимости от некоторого значения. Этот фон устанавливается динамически.
Я также хочу использовать черную рамку на кнопке.
Но я предполагаю, что большой улов в том, что я не могу использовать любые два из btn.SetBackgroundDrawable()
ИЛИ btn.SetBackgroundResource()
ИЛИ btn.SetBackgroundColor()
вместе.
В таком сценарии будет реализовано только позднее.
Любое решение ???
Окончательное редактирование
Как предположил один из пользователей, это прекрасно работает ... (GetColorForScrips()
возвращает значение RGB
, основанное на значении типа Float).
GradientDrawable drawable = new GradientDrawable();
drawable.SetShape(ShapeType.Rectangle);
drawable.SetStroke(1, Color.Black);
int[] colors=GetColorForScrips(decimal.Parse(result.Rows[i]["Change(%)"].ToString ()));
drawable.SetColor(Color.Rgb(colors[0],colors[1],colors[2]))
btn.SetBackgroundDrawable(drawable);