通常の古いAndroidボタンのCompound Drawableに線を引こうとしています。ボタンのドローアブルを使用して取得しようとすることから始めましたButton.getCompoundDrawables()[1]
が、線が表示されませんでした。そこで、ボタン上の複合ドローアブルの XML レイアウトに実際の画像を配置しました。これは問題なく動作しますが (写真のオレンジ色の四角)、電話を回転させると、ボタンに比例してオレンジ色の四角形のサイズが変更されないため、大きすぎます。getBounds()
ローテーションか何かを呼び出す必要がありますか?
気づいたら、赤い線は水平方向の角に行きますが、垂直方向には行きません。オフか何かです。オレンジ色の四角形は drawable-[lhm]dpi/ ディレクトリに異なるサイズで存在しますが、水平と垂直の 2 つの別々のレイアウトはありません。
線を引くためのコード:
@Override
public View getView (int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null)
{
LayoutInflater inflater = (LayoutInflater) _context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate (R.layout.monthview, parent, false);
}
btn_cell = (Button) row.findViewById (R.id.bcell);
...
BitmapDrawable btn_draw = (BitmapDrawable) btn_cell.getCompoundDrawables ()[1];
if (btn_draw != null)
{
Log.d (TAG, "+++++++++++++ drawing line");
Bitmap btn_bmp = btn_draw.getBitmap ();
Bitmap offscreen_bmp = Bitmap.createBitmap(btn_bmp.getWidth(), btn_bmp.getHeight(), btn_bmp.getConfig());
BitmapDrawable offscreen_draw = new BitmapDrawable (offscreen_bmp);
offscreen_draw.setBounds (btn_draw.getBounds ());
Canvas c = new Canvas(offscreen_bmp);
// draw line
Paint p = new Paint();
p.setAntiAlias(true);
p.setStrokeWidth(1);
p.setStyle(Style.FILL_AND_STROKE);
p.setColor(Color.RED);
c.drawBitmap (btn_bmp, 0, 0, p);
c.drawLine (0, 0, offscreen_bmp.getWidth (), offscreen_bmp.getHeight (), p);
(R.drawable.cal_left_arrow_off), null, null);
btn_cell.setCompoundDrawables(null, offscreen_draw, null, null);
}