Java Android ImageView布局问题

Java Android ImageView布局问题,java,android,android-layout,android-imageview,Java,Android,Android Layout,Android Imageview,很可能有一个重复的问题,但我还没有找到。我是以编程的方式做这件事的,而不是使用xml。基本上,我想做的是让编辑文本出现在图像下面。我将RelativeLayout与ImageView和EditText一起使用 以下是我正在为ImageView和EditText设置的参数: RelativeLayout.LayoutParams editTextParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutPar

很可能有一个重复的问题,但我还没有找到。我是以编程的方式做这件事的,而不是使用xml。基本上,我想做的是让编辑文本出现在图像下面。我将RelativeLayout与ImageView和EditText一起使用

以下是我正在为ImageView和EditText设置的参数:

RelativeLayout.LayoutParams editTextParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
editTextParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
editTextParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
editTextParams.width=500;
RelativeLayout.LayoutParams imageParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
imageParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
imageParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
imageParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
imageParams.addRule(RelativeLayout.ABOVE, editText.getId());
我已经验证了它是否正确地将EditText放置在右下角,并将图像放置在上面。我遇到的是,如果图片“太高”,那么它会覆盖文本。我也试过使用

imageView.setScaleType(ImageView.ScaleType.FIT_XY);
它还将其延伸到编辑文本上

我使用的完整代码如下

RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainLayout);
ImageView imageView = new ImageView(this);
EditText editText = new EditText(this);

RelativeLayout.LayoutParams editTextParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
editTextParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
editTextParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
editTextParams.width=500;
RelativeLayout.LayoutParams imageParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
imageParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
imageParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
imageParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
imageParams.addRule(RelativeLayout.ABOVE, editText.getId());

imageView.setLayoutParams(imageParams);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
editText.setLayoutParams(editTextParams);
Bitmap image = getImage();
imageView.setImageBitmap(image);
layout.addView(editText);
layout.addView(imageView);
谢谢。如有任何建议,将不胜感激


您可以做的一件事是固定imageview的宽度和高度。通过这种方式,您可以控制最大大小,而无需对编辑文本进行成像

RelativeLayout.LayoutParams imageParams = new RelativeLayout.LayoutParams(256, 256);

希望这会有所帮助。

创建一个线性布局,然后在其中添加两个组件(ImageVIew和EditText)

这是你应该做的

  • 将水平布局的方向设置为垂直,将宽度设置为所需的任意值
  • 将两个组件的with分别设置为0和权重设置为1
在那之后,你应该有两个项目,一个在另一个之上


我希望这有助于

您的editText与父项垂直匹配。它不应该是包装内容吗


(我不确定这是否有帮助,但可能会有帮助,因为MATCH_PARENT与您计划的布局相矛盾,并且您的屏幕截图表明editText垂直居中。)

宽度为500是一个选项,我尝试过这个方法,但没有解决问题。它所做的只是将图片缩小,但并没有解决问题。请看上面的屏幕截图,它是原始的,图片仍然像那样重叠,但只是缩小了。另一件要尝试的事情是,不要在edittext上面添加图像,而是尝试在图像下面添加edittext。因此,将LayoutParams更改为下面的参数。而不是
imageParams.addRule(RelativeLayout.over,editText.getId())使用此
editTextParams.addRule(RelativeLayout.BELOW,imageView.getId())然后先将图像添加到视图,然后再添加编辑文本。这是最有帮助的(对其他人来说很抱歉),解决了我最初的问题。编辑文本现在始终显示在图片下方。我现在遇到了一个问题,不同的图片(我是根据图片的尺寸猜的)在图片的实际边框和编辑文本之间留下了很多空白,但是你让我走得很好。谢谢:)我很高兴它帮助了你!