2011-02-17 41 views
0

我正在使用RelativeLayout将视图定位在屏幕上的精确位置。这可以像预期的那样使用一个视图来绘制矩形。但是当使用像EditText这样的Android视图时,它们的绘制时间比大约8个单位的指定时间要短。点击绘制的EditText之外(但是在由RelativeLayout指定的参数内),实际上会点击EditText。Android视图不像指定的高度

下面是一些代码来说明我的意思:

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似乎比尝试使用高度的百分比效果更好)。

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

谢谢。

+0

你能提供截图吗?我无法在代码中看到您实际尝试完成的任务... – WarrenFaith 2011-02-17 21:08:15

+0

您可以尝试http://img508.imageshack.us/i/screenht.jpg/。基本上,我使用完全相同的参数添加两个视图。一个视图(为了清晰起见,我为了绿色而绘制的矩形)遵守参数。另一个视图(EditText)比参数状态短。有趣的是,我可以点击EditText下方显示的绿色部分,EditText就好像我点击它一样响应。所以也许我只需要摆弄利润或什么东西? – Darrell 2011-02-17 21:27:46

回答

0

这只是因为使用了实际的EditText背景图片。按钮是相同的方式,由于某些原因谷歌决定绘制一些额外的透明填充像素9补丁背景图像。真的,唯一的解决方案就是绘制自己的9贴片,或修改现有的Android 9贴片以去除额外的像素。

相关问题