2016-08-18 79 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