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"/>
편집 :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);
}
을하지만, 완전히 블랙 박스에 가득를 끌고있다, 검은 색 테두리가있는 투명한 창이 아닙니다.
편집 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);
편집 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
@ Andreas : 감사합니다. 완벽하게 작동합니다! – Josh