Я возиться с приложением календаря в Android и хотел бы иметь возможность размещать линии поверх кнопки или помещать изображение поверх кнопки в определенном месте Y.Есть ли способ сделать это?Я не думаю, что обычные элементы рисования (слева, сверху, справа, снизу) дадут мне нужное расположение.Спасибо!
ОБНОВЛЕНИЕ:
Ниже приведены результаты кода ниже для рисования линии на нарисованной кнопке.То, что я должен был сделать, это дать кнопке прозрачное изображение в формате png для топа, который можно нарисовать в коде XML.Без этого это не сработало бы.
Одна из проблем, которые я вижу здесь, заключается в том, что я ограничен всего несколькими строками.В одном из ответов говорилось что-то о расположении кнопок на макете, но я не уверен, что следую.Придется еще немного поэкспериментировать.
Есть ли способ рисовать на всей кнопке, а не только на маленьких нарисованных областях?
package com.test.buttondraw;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.widget.Button;
public class ButtonDrawTestActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate (Bundle savedInstanceState)
{
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
Button b1 = (Button) findViewById (R.id.button1);
// get the second array element (0 based) which is the top drawable
BitmapDrawable d = (BitmapDrawable) b1.getCompoundDrawables ()[1];
if (d != null)
{ // thanks to dbrettschneider for bitmap code sample
Bitmap b1src = d.getBitmap ();
Bitmap tmp = Bitmap.createBitmap(b1src.getWidth(), b1src.getHeight(), b1src.getConfig());
BitmapDrawable bd = new BitmapDrawable (tmp);
bd.setBounds (d.getBounds ());
Canvas c = new Canvas(tmp);
Paint p = new Paint();
p.setAntiAlias(true);
c.drawBitmap (b1src, 0, 0, p);
// set thickness of line
p.setStyle (Style.STROKE);
p.setStrokeWidth (5);
// colors to use for each y position
int [] clr = {Color.BLACK, Color.RED, Color.GREEN,
Color.MAGENTA, Color.WHITE, Color.YELLOW,
Color.CYAN, Color.BLUE, Color.DKGRAY };
int ypos = 10;
// draw a different colored line for each element in the ypos array
for (int i = 0; i < clr.length; i++)
{
p.setColor(clr[i]);
c.drawLine (0, ypos, b1src.getWidth (), ypos, p);
ypos += 8;
}
b1.setCompoundDrawables (null, bd, null, null);
}
}
}
Вот код XML:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/png_transbg"
android:maxHeight="128dp"
android:maxWidth="128dp"
android:minHeight="128dp"
android:minWidth="128dp"
android:text="Button" />