Как передать переменные в пользовательский вид перед вызовом onDraw ()?

Чего я пытаюсь достичь:

измерить контейнерView в моем макете, mainContainer, который определен вXMLпройтиmainContainer's width and height в другой обычайView доonDraw() называетсяЯ хочу передать ширину и высоту, так что обычайView знает где рисоватьcanvas.drawBitmap используя координатыПользовательский вид будетprogrammatically создан из кода

Как я могу передать измеренную ширину int и высоту int в мой пользовательский View до вызова onDraw ()?

Пользовательский вид

public class AvatarView extends ImageView {

private Bitmap body;
private Bitmap hat;

public AvatarView(Context context) {
    super(context);
    init();
}

public AvatarView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public AvatarView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

private void init() {
    body = BitmapFactory.decodeResource(getResources(), R.drawable.battle_run_char);
    hat = BitmapFactory.decodeResource(getResources(), R.drawable.red_cartoon_hat);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawBitmap(body, x, y, null);
    canvas.drawBitmap(hat, x, y, null);
}
}

Фрагмент

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_customize_avatar, container, false);
    final RelativeLayout mainContainer = (RelativeLayout) view.findViewById(R.id.main_container);
    TwoWayView inventoryList = (TwoWayView) view.findViewById(R.id.inventory);

    inventoryList.setAdapter(null);

    inventoryList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

        }
    });

    mainContainer.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @SuppressLint("NewApi")
        @SuppressWarnings("deprecation")
        @Override
        public void onGlobalLayout() {
            // Retrieve the width and height
            containerWidth = mainContainer.getWidth();
            containerHeight = mainContainer.getHeight();

            // Remove global listener
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN)
                mainContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            else
                mainContainer.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        }
    });

    return view;
}

XML

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:clickable="true"
android:background="#fff" >

<com.walintukai.lfdate.CustomTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:textStyle="bold"
    android:textColor="#fff"
    android:textSize="20sp"
    android:textAllCaps="true"
    android:text="@string/customize_avatar"
    android:background="#009BFF" />

<RelativeLayout
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

<org.lucasr.twowayview.TwoWayView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/inventory"
    style="@style/HorizontalListView"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:drawSelectorOnTop="false"
    android:background="#f3f3f3" />

</LinearLayout>

Ответы на вопрос(1)

Ваш ответ на вопрос