如何在自定义视图的onLayout函数中布局RelativeLayout?

时间:2015-08-14 01:01:48

标签: java android android-layout

我正在实施自定义视图,并且我有三个我无法显示的子视图。似乎子视图没有显示;我现在将背景设置为红色,蓝色和绿色,以显示我设置布局的位置,如图所示。

我需要显示子视图以便视图完整。

这是我在onLayout中用于子视图的代码:

    backButton.layout(leftOffset, topOffset, leftOffset + seventhWidth, topOffset + seventhWidth);
    backButton.setBackgroundColor(Color.RED);
    nextButton.layout((int) (leftOffset + calendarWidth - seventhWidth), topOffset, (int) (leftOffset + calendarWidth), topOffset + seventhWidth);
    nextButton.setBackgroundColor(Color.GREEN);
    monthContainerLayout.layout(leftOffset + thirdWidth, topOffset, (int) Math.round(leftOffset + 2 * thirdWidth), topOffset + seventhWidth);
    monthContainerLayout.setBackgroundColor(Color.BLUE);

这是红色方块的布局XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/back"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:src="@drawable/back_icon"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/icon_height" />

</RelativeLayout>

这是代码和布局当前产生的内容(我的自定义视图只是日历):

enter image description here

不确定这是否重要,但这就是我提出意见的方式:

        LayoutInflater inflater = LayoutInflater.from(context);
        inflater.inflate(R.layout.calendar_back, this);
        inflater.inflate(R.layout.calendar_forward, this);
        inflater.inflate(R.layout.calendar_header, this);
        backButton = (RelativeLayout) findViewById(R.id.back);
        nextButton = (RelativeLayout) findViewById(R.id.forward);
        monthContainerLayout = (RelativeLayout) findViewById(R.id.header);

0 个答案:

没有答案