Android视图不如指定的高

时间:2011-02-17 20:56:27

标签: android view relativelayout

我使用RelativeLayout将视图定位在屏幕上的精确位置。当使用一个说明绘制矩形的视图时,这可以正常工作。但是当使用像EditText这样的Android视图时,它们的绘制时间比约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似乎比尝试高度的百分比更好)。

接下来的任务是进入源头但是想知道是否有人已经解决了这个问题。

感谢。

1 个答案:

答案 0 :(得分:0)

这只是因为使用了实际的EditText背景图像。按钮也是一样的,出于某种原因谷歌决定用一些额外的透明填充像素绘制9补丁背景图像。真的,唯一的解决方案,如果是一个问题,将是绘制自己的9补丁,或修改现有的Android 9补丁,以删除额外的像素。