Program aracılığıyla bir düğme oluşturuyorum. Bu yuvarlatılmış ve bir degrade arka planı vardır ve iyi çalışıyor ve güzel görünüyor, ancak istediğim iki şeyi yapamadım:Düğme oluşturmaya çalışılıyor: Kontur renginin nasıl ayarlanacağı ve bir degradenin yüksekliği bilmeden nasıl "hizalanacağı" nasıl ayarlanır?
- Verilen bir renkle 1 piksel konturu oluşturun. GetPaint(). SetStroke() yöntemini denedim, ancak kontur renginin nasıl ayarlanacağını belirleyemedim. Nasıl yapmalıyım?
- Eğimi, hangi yükseklikte olursa olsun düğmenin altına hizalayın. Mümkün mü? Başvuru için
, bu kullanıyorum kodudur:
İlk sorunuz açısındanButton 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);
Bu neredeyse çalışır, ancak kontur kırpılır. Bu bağlantı daha fazla ayrıntı içerir: http://www.betaful.com/2012/01/programmatic-shapes-in-android/ – mxcl
Yukarıdaki bağlantı bozuk. Bu güncelleştirilmiş bağlantıdır: http://betaful.com/post/82668809883/programmatic-shapes-in-android –
@ ShamsShafiq, @ Stev_k @ moraes, bunun yanı sıra betauful.com cevabını kullanmaya çalışmıştım Köşe yarıçapı ile programatik olarak kenarlık yaratın ... ve çok iyi çalışır ancak görünümün dışında bir kenar oluşturur. Elde ettiğim görünüm, https://drive.google.com/file/d/0BwkVxZWl7VcETlIySV82NC1sV2s/view?usp=sharing bağlantısında mevcut. Bu nedenle, lütfen şu kenarda bulunan kenarları temizlemede bana yardımcı olun .. – TheReprator