我已經開發了擴展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