Я использую RelativeLayout для позиционирования видов в точных точках на экране.Это работает, как и ожидалось, при использовании представления, которое говорит, рисует прямоугольник.Но при использовании представлений Android, таких как EditText, они нарисованы короче, чем указано, примерно на 8 единиц.Если щелкнуть за пределами нарисованного EditText (но в пределах параметров, указанных в RelativeLayout), фактически попадет в EditText.
Вот некоторый код для иллюстрации того, что я имею в виду:
package com.DrawDemo;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RelativeLayout;
public class DrawDemo extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
RelativeLayout l = new RelativeLayout(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(100,100);
lp.leftMargin = 50;
lp.topMargin = 50;
DemoView demoview = new DemoView(this);
l.addView(demoview, lp);
EditText editText = new EditText(this);
l.addView(editText, lp);
setContentView(l);
}
private class DemoView extends View
{
public DemoView(Context context)
{
super(context);
}
@Override protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.GREEN);
canvas.drawPaint(paint);
}
}
}
Если вы выполните это, вы заметите, что EditText заметно короче прямоугольника.Я пробовал работать с onMeasure, setMinimumXXX и всем остальным, о чем я могу подумать.Пока что единственное, что работает с некоторым уровнем успеха, - это просто добавить примерно 8 пикселей к высоте (8, кажется, работает лучше, чем пробовать процент от высоты).
Следующая задача будет состоять в том, чтобышаг в источник, но было интересно, если кто-то уже решил это.
Спасибо.