2
私は単純なクラスBoundedView
を持っています。View
です。私は主にonTouchEvent
コールバック関数を混乱させるためにこれをやっています。Android - カスタムビューのボーダー
このビューの各インスタンスの周囲に、クラス自体から境界線を描く方法はありますか?そうでない場合は、これを実装する最も簡単な方法は何ですか?
実装:
public class BoundedView extends View
{
public String cellName = "no name";
// constructors are here.
@Override
public void onDraw(Canvas canvas)
{
// maybe here? Right now it's invisible, used only for touch detection
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
Intent i = new Intent(getContext(), TabCellDetails.class);
i.putExtra("cellName", this.cellName);
getContext().startActivity(i);
return false;
}
}
使用:
<com.lifecoderdev.android.drawing1.BoundedView
android:id="@+id/boundedView1"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="78dp"
android:layout_marginRight="96dp"
android:tag="Smooth Endoplasmic Reticulum"/>
EDIT:Thisは近い私を取得します。
public void onDraw(Canvas canvas)
{
int[] colors = { 0xFF000000, 0xCC000000 };
float[] radii = { 5, 5, 5, 5, 5, 5, 5, 5 };
GradientDrawable drawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, colors);
drawable.setCornerRadii(radii);
drawable.setStroke(1, 0xFF000000);
this.setBackgroundDrawable(drawable);
}
をしかし、それは完全にブラックボックスに充填描画され、黒い境界線を持つ透明なものではありません。
EDIT 2:がそれを手に入れた:
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(1.0f);
canvas.drawRect(0, 0, getWidth(), 1.0f, paint);
canvas.drawRect(0, 0, 1.0f, getHeight(), paint);
canvas.drawRect(0, getHeight()-1.0f, getWidth(), getHeight(), paint);
canvas.drawRect(getWidth()-1.0f, 0, getHeight(), getWidth(), paint);
EDIT 3:アンドレアスとウォーレンのソリューションは非常に良くた:
@Override
public void onDraw(Canvas canvas)
{
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(1.5f);
paint.setStyle(Style.STROKE);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
}
'ペイントペイント=新しいペイント(); paint.setColor(Color.BLACK); paint.setStrokeWidth(1.0f); canvas.drawRect(0、0、getWidth()、getHeight()、paint); ' 私にはただ黒い四角形が与えられます。何か不足していますか?私はそれの背後にImageViewがあるので、透明であるために非境界線を必要とします。 – Josh
「paint.setStyle(Style.STROKE)」を試してください。 – Andreas
@アンドレアス:ありがとう、それは完璧に動作します! – Josh