我已经开发了扩展View
类的自定义视图的视图:问题用的setBackground():被拉伸似乎也适用于父母,而不是
public class ScRectangle extends View implements Parcelable{ ... }
我也创建了以下绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid
android:color="@android:color/transparent" />
<corners
android:radius="@dimen/thickBorder" />
<stroke android:width="@dimen/thickBorder"
android:color="@color/fab_color_normal" />
然后我试图将此绘制作为背景适用于上述自定义视图的新实例:
ScRectangle r = new ScRectangle(this, left, top, right, bottom, "thinBorder", "OrangeState", 0);
r.setBackground(ContextCompat.getDrawable(mContext, R.drawable.selected_state));
drawingFrame.addView(r);
r
是drawingFrame
中的唯一视图。上面的代码正确地在帧中添加了预期的矩形,在正确的位置和正确的大小。但是,该可绘制似乎适用于drawingFrame
而不是r
。
***** EDIT *****
在下面的图片,r
是在D5中的小浅橙色正方形,而可绘为沿着整个网格暗橙色边框。
应该如何更改上面的代码?
你能后的一个画面? – Vucko
您正在添加自定义'View'而没有指定'LayoutParams',所以它可能会填充父项。事实上,在View的构造函数调用中有'left','top','right'和'bottom'参数使我认为那些是矩形的边界。但是,在View中设置的背景将填充View的边界,而不是矩形的边界,因此它看起来像是在父窗口上设置的,实际上,您的自定义“View”正在填充父母。您需要自己处理该图像,并且/或者在添加“视图”时使用适当的“LayoutParams”。 –
左,上,右,下都是错误的。每当添加视图到ViewGroup时,它都是LayoutParams。并从这些参数 – Nepster