在屏幕上的(0,0)处绘制图像绘制在左下角

时间:2013-06-02 04:13:28

标签: android android-linearlayout ondraw

我正在创建一个日历,并将根据当前季节制作动画。 即如果是冬天,雪花会从屏幕顶部掉下来。

目前我有日历布局,当我在(0,0)绘制图像时,我希望它们会显示在屏幕的左上角...我将雪花添加到主布局中,但是由于某种原因,他们去了我的gridView的底部。我只能假设我的一个布局占用了空间,但我不确定.. 这是我的日历布局:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/calendar_main_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <Button android:text="Selected :"
        android:id="@+id/main_header_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/calendar_top_header" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

    <ImageView
        android:id="@+id/calendar_left_arrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/cal_left_arrow_off" />

    <Button android:text=""
        android:id="@+id/selected_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/calendar_centralheader"
        />

    <ImageView
        android:id="@+id/calendar_right_arrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/cal_right_arrow_off" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/blue_bg_with_text" />

    </LinearLayout>

            <GridView
        android:id="@+id/calendar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:numColumns="7" >

    </GridView>



</LinearLayout>

这里是eclipse中日历的截图:enter image description here

1 个答案:

答案 0 :(得分:1)

  

我正在将雪花添加到主布局中,但出于某种原因,它们会转到我的gridView的底部。

视图层次结构的根是LinearLayout,它按水平或垂直顺序排列所有子视图...它们都没有重叠。如果您在Java代码中向根LinearLayout添加另一个视图,它将在最后一个当前子项(将是您的GridView)之后添加并布局。

如果要将动画季节图像添加为其他视图,则可能需要修改应用程序以在根目录中添加FrameLayout,以便您可以添加视图并将它们简单地叠加在同一空间中(它们除非设置重力值,否则将固定在左上角。这不会取代你现有的LinearLayout,它会包含它们,即

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/calendar_main_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <!-- Your entire existing layout now inside of here --> 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/bg"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <!-- All the other existing stuff... --> 

    </LinearLayout>
</FrameLayout>

现在,您可以将额外的观看次数添加到FrameLayout,他们应该按照您的预期进行操作。