Попытка потянуть кнопку: как выбрать цвет обводки и как “выровнять” градиент к нижней части, не зная высоты?

Я создаю кнопку программно. Это округлено и имеет фон градиента, и хорошо работает и выглядит хорошим, но я не мог сделать двух вещей, которые я хотел:

  1. Установите штрих на 1 пиксель с данным цветом. Я попробовал getPaint () .setStroke (), но не мог изобразить, как выбрать цвет обводки. Как я должен сделать это?
  2. Выровняйте градиент к нижней части кнопки, какую высоту это имеет. Действительно ли это возможно?

Для ссылки это - код, который я использую:

Button btn = new Button(context);
btn.setPadding(7, 3, 7, 5);
btn.setTextColor(text_color);

// Create a gradient for the button. Height is hardcoded to 30 (I don't know the height beforehand). 
// I wish I could set the gradient aligned to the bottom of the button.
final Shader shader = new LinearGradient(0, 0, 0, 30,
    new int[] { color_1, color_2 },
    null, Shader.TileMode.MIRROR);

float[] roundedCorner = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 }
ShapeDrawable normal = new ShapeDrawable(new RoundRectShape(roundedCorner, null, null));
normal.getPaint().setShader(shader);
normal.setPadding(7, 3, 7, 5);

// Create a state list (I suppressed settings for pressed).
StateListDrawable state_list = new StateListDrawable();
state_list.addState(new int[] { }, normal);

btn.setBackgroundDrawable(state_list);
10
задан moraes 27 January 2010 в 07:52
поделиться