2016-08-18 35 views
-1

我已经开发了扩展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); 

rdrawingFrame中的唯一视图。上面的代码正确地在帧中添加了预期的矩形,在正确的位置和正确的大小。但是,该可绘制似乎适用于drawingFrame而不是r

***** EDIT *****

在下面的图片,r是在D5中的小浅橙色正方形,而可绘为沿着整个网格暗橙色边框。

enter image description here

应该如何更改上面的代码?

+0

你能后的一个画面? – Vucko

+1

您正在添加自定义'View'而没有指定'LayoutParams',所以它可能会填充父项。事实上,在View的构造函数调用中有'left','top','right'和'bottom'参数使我认为那些是矩形的边界。但是,在View中设置的背景将填充View的边界,而不是矩形的边界,因此它看起来像是在父窗口上设置的,实际上,您的自定义“View”正在填充父母。您需要自己处理该图像,并且/或者在添加“视图”时使用适当的“LayoutParams”。 –

+0

左,上,右,下都是错误的。每当添加视图到ViewGroup时,它都是LayoutParams。并从这些参数 – Nepster

回答

0

覆盖

在你的自定义类的setBackground方法,并设置背景当前视图

+0

? – ema3272

+0

你可以添加布局文件吗? – Don