当前位置: 首页 > 知识库问答 >
问题:

ImageView在其上绘制边框形状时正在调整大小

顾炎彬
2023-03-14

这是我的shape_two文件,我把它放进了我的drawable文件夹。

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<solid android:color="#00FFFFFF" />

<stroke
    android:width="3dp"
    android:color="#00ff00" />

</shape>
private void drawLayer(ImageView tempView, Drawable drble, int wherecall) {

    Drawable drawableRes = getResources()
            .getDrawable(R.drawable.shape_two);// loadDrawable(R.drawable.shape_two);
            int h = tempView.getMeasuredHeight();
    int w = tempView.getMeasuredWidth();
    drawableRes.setBounds(0, 0, w, h);
    Drawable[] drawableLayers = { drble, drawableRes };
    ld = new LayerDrawable(drawableLayers);
    if (wherecall != 3) {
        tempView.setBackground(ld);
    } else {
        tempView.setImageDrawable(ld);
    }
    td = new TransitionDrawable(drawableLayers);
    td.setCrossFadeEnabled(true);

}

我的问题是,当我在我的ImageViews上绘制形状时,它会被重新调整大小(改变高度和宽度)。我有不同大小的imageView和我想使用单一形状的xml绘制边框,我的imageView大小不应该改变,而这样做。谁都可以告诉我如何实现它。

在搜索了很多东西后,我才知道,我不能对它执行位图操作来根据形状重新调整它的大小,因为xml文件不是位图。我在某处读到这个问题可以通过使用画布来解决,但是怎么做呢…

更新:

 GradientDrawable gd = new GradientDrawable();
     gd.setStroke(3, Color.GREEN);
     gd.setSize(drble.getBounds().width(), drble.getBounds().height());
     gd.setColor(0xff424242);

我另一个尝试是在画布上画图像,

每件事都给我同样的结果。

更新

请通过我的答案,你可能会找到好的点搜索并获得+50。

共有1个答案

支彭亮
2023-03-14

经过了很多的挣扎,用了很多的方法,花了一天一夜的寻找,终于在这三行中找到了我的解决之道。

    ld.setBounds(0, 0, tempView.getWidth(), tempView.getHeight());
    ld.setLayerInset(0, 0, 1, 0, 1);
    ld.setLayerInset(1, 0, 0, 0, 0);

如果仍然有重新调整imageView大小的问题,请在shape xml布局中添加一些填充,这样可以节省一些时间。

 类似资料:
  • 问题内容: 我有以下代码在NSImage上绘制文本。但是,当我将其保存到磁盘时,生成的图像将被调整为较小的尺寸。 我做错了什么?请指教 问题答案: 这是另一种使用临时方法绘制图像和文本并将结果缓存到新图像中的方法(代码为Swift 4)。您无需处理像素的好处 要使用它,初始化一个视图 并获得新的形象 注意: 根本不使用段落样式,但是如果要创建可变的段落样式,只需编写

  • 问题内容: 我创建了此代码,当我 在JForm上选择单选按钮时,该代码应该绘制某些内容,我已经使用NetBeans创建了GUI。 当我选择单选按钮时,没有任何反应。 一段时间以来,我一直在试图找出问题所在,但仍然找不到解决方案,这就是我来 这里的原因。如果有人发现错误,我将不胜感激。 问题答案: 我在您的代码中看到了一些问题: 您正在扩展JFrame,您不应该这样做,因为可以将其读DrawShap

  • 问题内容: 我试图通过拖放在由PyQt5创建的GUI上绘制一个矩形。我设法做到了,但是释放鼠标左键时就绘制了矩形。 我想做的就是这个链接: 当按下鼠标左键时,开始绘制矩形。 拖动时,通过鼠标移动调整矩形形状。 释放鼠标左键时,确定矩形形状。 我该如何实施?提前致谢。 这是我的代码。 问题答案: 您不必使用该函数,但是每次移动鼠标时都会调用该函数,并且我已经修改了代码以使其更简单。

  • 我在java swing中有一个UI需求,其中我需要实现以下内容: 顶部的两个按钮放在一个JPanel中。我需要画一条线通过该面板的中心,直到两个按钮的开始。下面的面板是以卡片布局排列的面板的容器。当按钮被点击时,卡片被切换显示另一个面板。 因此,在所有方面,它看起来都像一个JTabbedPane,但有一点不同,选项卡是排列在选项卡窗格中心的按钮。我需要为我正在构建的UI提供这种差异。 正如您所看

  • 我有一个JavaFX TabPane,其中我放置了一个按钮作为选项卡选择器。所以我可以在按钮上画形状。当我像这样画一个简单的多边形时,一切都很好: 但是我想要一个这样的多边形: 当我尝试使用5个角坐标时,只有我的第一个示例正在绘制。我需要更改什么才能绘制底部的线?是否可以使用多边形?还是我需要使用其他东西?

  • 我在StackPane中调整ImageView的大小时遇到了一个问题:如果StackPane是根容器,并且我将图像的高度和宽度绑定到StackPane,则一切正常。 但若我将这样的堆栈窗格放置在网格中,那个么图像的大小就无法正确调整。正如我所读到的,ImageView无法调整大小的问题。有什么方法可以调整它的大小吗?或者你能给一些建议如何调整ImageView的大小吗?