Я новичок в Android. Теперь у меня проблема с рисованием границ LinearLayout. Я рисую границы по следующим кодам.Android: нарисовать границы на LinearLayout
public class Borders{
int w;
int h;
public Borders(int x, int y){
w = x;
h = y;
}
public void drawBorderInImg(Canvas canvas){
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStrokeWidth(10);
paint.setColor(Color.BLACK);
canvas.drawLine(0, 0, w, 0, paint);
canvas.drawLine(w, 0, w, h, paint);
canvas.drawLine(w, h, 0, h, paint);
canvas.drawLine(0, h, 0, 0, paint);
}
}
Я создаю логическое значение и использую onclickListener() для его управления. По умолчанию значение равно false, поэтому на экране нет границы.
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// operate.refresh(ShapeData.figureList1);
Borders borders = new Borders(img01.getWidth(), img01.getHeight());
if(img01DrawOrNot){
borders.drawBorderInImg(canvas);
}
А потом я
img01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(img01DrawOrNot){
img01DrawOrNot = false;
} else{
img01DrawOrNot = true;
}
}
});
Я установил андроид: кликабельным = в XML истинный. Это действительно работает. Но мне нужно postInvalidate() это. На самом деле, я не могу обновить его, потому что он содержит некоторые случайные формы, когда я делаю postInvalidate(), все представления будут меняться. Как это может измениться автоматически? Поэтому, когда я нажимаю, он появится, и когда я снова нажму, он исчезнет. Может кто-нибудь мне помочь? Ура!
Ну, это не так много, ответ на ваш вопрос но альтернативная возможность. Вместо этого вы можете использовать патч Nine с только границами (без заполнения). http://developer.android.com/guide/developing/tools/draw9patch.html – Knossos