Versuchen, zeichnen Sie eine Schaltfläche: wie Sie einen Schlaganfall Farbe und wie Sie "ausrichten" Sie einen Farbverlauf auf den Boden, ohne zu wissen, die Höhe?

Ich bin erstellen einer Schaltfläche programmatisch. Es ist abgerundet und hat einen Farbverlauf im hintergrund, und funktioniert gut und sieht nett aus, aber ich konnte nicht zwei Dinge, die ich wollte:

  1. Legen Sie eine 1-pixel-Kontur mit einer bestimmten Farbe. Ich habe versucht, getPaint().setStroke(), aber konnte nicht herausfinden, wie Sie zum festlegen der Konturfarbe. Wie sollte ich es tun?
  2. Richten Sie die Steigung an der Unterseite der Taste, egal welche Höhe es hat. Ist das möglich?

Als Referenz, dies ist der code, den ich verwende:

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);

InformationsquelleAutor moraes | 2010-01-27

Schreibe einen Kommentar