【发布时间】:2013-12-23 17:52:42
【问题描述】:
这是我放在可绘制文件夹中的 shape_two 文件。
<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);
}
这里 tempview 是我的 ImageView,而 drble 是我在另一层上使用的另一个可绘制对象。此代码没有任何错误消息正常工作。
我的问题是当我在 ImageViews 上绘制形状时,它会重新调整大小(更改高度和宽度)。我有不同大小的 imageView,我想使用单一形状的 xml 来绘制边框,这样做时我的 ImageView 大小不应该改变。谁能告诉我如何实现它。
在搜索了很多东西后,我才知道我无法对其执行位图操作以根据形状重新调整大小,因为 xml 文件不是位图。我在某处读到,这个问题可以通过使用画布来解决,但是怎么做..
更新:
我观察到,虽然改变图层 onsingletap 只是高度增加而不是 ImageView 的宽度。如果我的布局有 4 个 ImageView,那么第一次只在不同的 imageView 上单击,所有 imageView 都会重新调整大小一次。之后,如果我们再次单击 - 再次没有任何东西可以重新调整大小。 我想在 ImageView 上设置图层第一次重新调整视图大小,然后它会自行调整。我不知道为什么会这样。
我正在为我的所有布局应用相同的代码,对于某些布局,它可以正常工作,而对于某些布局则不行。
我已经尝试过了。
-
我已经尝试通过 GradientDrawable 制作边框图像
GradientDrawable gd = new GradientDrawable(); gd.setStroke(3, Color.GREEN); gd.setSize(drble.getBounds().width(), drble.getBounds().height()); gd.setColor(0xff424242); 我的另一个尝试是在画布上绘制图像,
- 将边框图片放入drawable文件夹根据ImageView的高度和宽度重新调整大小,将其转换为drawable并设置。
- 我还尝试减小内部图像大小,并且边框位图大小是图像视图的大小,也与之相反。
每件事都给我同样的结果。
更新
请仔细阅读我的回答,您可能会发现搜索并获得+50的好点。
【问题讨论】:
标签: android imageview android-canvas layer shape