首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓CalendarView降低布局速度

安卓CalendarView降低布局速度
EN

Stack Overflow用户
提问于 2012-12-11 09:13:23
回答 4查看 6.2K关注 0票数 17

我都快疯了。我的安卓应用程序中有一个片段,它是使用RelativeLayout进行布局的。问题是,由于某些原因,渲染需要很长时间,大约需要5秒才能在屏幕上加载大约4个元素。

其中一个元素是CalendarView,当我移除它时,它会恢复到正确的速度(即: instant)。我可以想象,问题出在我要求Android部署它的方式上,一定是没有太多意义,或者是效率低下之类的。

下面是XML文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">

<TextView
     android:id="@+id/title"
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:textStyle="bold"
     android:text="TODAY"
     android:textAppearance="?android:attr/textAppearanceLarge" 

     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_toLeftOf="@+id/time" />

<TextView
     android:id="@id/time"
     android:gravity="right"
     android:textStyle="bold"
     android:layout_width="100dp"
     android:layout_height="wrap_content"
     android:text="11:32"
     android:textAppearance="?android:attr/textAppearanceLarge"

     android:layout_alignParentRight="true" />

<TextView
    android:id="@+id/date_info"
    android:layout_margin="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Wednesday, 15th August 2012"
    android:textAppearance="?android:attr/textAppearanceMedium"

    android:layout_below="@id/title"
    android:layout_alignParentLeft="true" />

<CalendarView        
    android:id="@+id/calendar_view"
    android:layout_width="250dp"
    android:layout_height="250dp"
    android:background="@drawable/white_back_black_border"

    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true" />
</RelativeLayout>

我尝试过很多不同的布局选项,但删除日历似乎是唯一有意义的事情。

任何真知灼见都将不胜感激。谢谢

EN

回答 4

Stack Overflow用户

发布于 2013-08-05 23:47:53

似乎直接在RelativeLayout中使用CalendarView并不能很好地工作。以下使用FrameLayout的解决方案在模拟器中的加载速度要快得多:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp" >

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/time"
        android:text="TODAY"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textStyle="bold" />

    <TextView
        android:id="@id/time"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="right"
        android:text="11:32"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/date_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/title"
        android:layout_margin="20dp"
        android:text="Wednesday, 15th August 2012"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <FrameLayout
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" >

        <CalendarView
            android:id="@+id/calendar_view"
            android:layout_width="250dp"
            android:layout_height="250dp"
            android:background="@drawable/white_back_black_border" />
    </FrameLayout>
</RelativeLayout>
票数 3
EN

Stack Overflow用户

发布于 2013-12-05 21:48:09

发现CalendarView小部件需要将高度设置为match_parent,然后您可以将其放置到任何布局。例如在高度为200的相对位置。这在4.0.3模拟器和三星Galaxy Tab 4.2.2上运行良好。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true" >

        <CalendarView
            android:id="@+id/cv_dialog_filter_date"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </RelativeLayout>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/relativeLayout2"
        android:layout_centerHorizontal="true"
        android:text="05.12.2013" />

</RelativeLayout>
票数 3
EN

Stack Overflow用户

发布于 2015-04-13 05:37:31

将CalendarView放在FrameLayout中就可以解决这个问题。下面是一个XML代码示例:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#cc00b1cc">

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="102dp"
        android:layout_alignParentBottom="true">

        <CalendarView
            android:layout_width="425dp"
            android:layout_height="374dp"
            android:id="@+id/calendarView"
            android:layout_gravity="left|top" />
    </FrameLayout>
</RelativeLayout>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13812084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档