2013-09-10 2 views
6

Я работаю над приложением в CalendarView. Я должен показать calendarView в небольшом линейном макете.CalendarView занимает много времени для отображения

проблема возникает при отображении целой страницы, которая содержит calendarView в малой линейной макете. -> Это занимает 10 секунд, чтобы показать, & это время ...

нет другой вещи в макете.

вот мой XML и оснастки ...

любая помощь будет сильно appriciated ...

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:orientation="vertical" > 

      <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="30" 
       android:paddingLeft="30dp" > 

       <TextView 
        android:id="@+id/txtDate" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="My Calendar" 
        android:textSize="50sp" /> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="2dp" 
        android:layout_alignParentBottom="true" 
        android:layout_marginBottom="40dp" 
        android:layout_marginRight="30dp" 
        android:background="@android:color/black" /> 
      </RelativeLayout> 

      <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="70" 
       android:paddingBottom="30dp" 
       android:paddingLeft="20dp" 
       android:paddingRight="20dp" 
       android:paddingTop="30dp" > 

       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:gravity="center" 
        android:orientation="vertical" > 

        <ListView 
         android:id="@+id/list_task" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" > 
        </ListView> 
       </LinearLayout> 
      </RelativeLayout> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:orientation="vertical" > 

      <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="30" > 

       <CalendarView 
        android:id="@+id/cal_small" 
        android:layout_width="250dp" 
        android:layout_height="250dp" 
        android:layout_centerHorizontal="true" 
        android:background="@android:color/darker_gray" 
        android:showWeekNumber="false" 
        android:animateLayoutChanges="false" 
        android:clipChildren="false" 
        android:drawingCacheQuality="low" 
        android:soundEffectsEnabled="false" 
        android:hapticFeedbackEnabled="false" 
        /> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="2dp" 
        android:layout_alignParentBottom="true" 
        android:layout_marginBottom="40dp" 
        android:layout_marginLeft="30dp" 
        android:layout_marginRight="30dp" 
        android:background="@android:color/black" /> 
      </RelativeLayout> 

      <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="70" > 

       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginBottom="30dp" 
        android:layout_marginRight="10dp" 
        android:layout_marginTop="30dp" 
        android:orientation="vertical" > 

        <LinearLayout 
         android:layout_width="fill_parent" 
         android:layout_height="0dp" 
         android:layout_weight="8" > 

         <ListView 
          android:id="@+id/list1" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:paddingLeft="30dp" > 
         </ListView> 
        </LinearLayout> 

        <ListView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" > 
        </ListView> 
       </LinearLayout> 
      </RelativeLayout> 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 

enter image description here

+3

связанные http://stackoverflow.com/questions/13812084/android-calendarview-slowing-down-layout – laalto

ответ

10

Это кажется очень простым, но случайно я испытал это , и он работает хорошо. Я надеюсь, что это также поможет вам ...

Сначала создайте отдельный XML-файл, который содержит только CalendarView. Названный «cal_view.xml»

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <android.widget.CalendarView 
     android:layout_width="200dp" 
     android:layout_height="200dp" /> 

</LinearLayout> 

Затем включите этот XML-файл в свой основной файл XML, так же, как следующее. Вместо вашего CalanderView включите XML-файл.

<include 
    android:id="@+id/subCategory" 
    layout="@layout/cal_view" /> 
+1

я не знаю, как это работает, но это просто работа для меня ... Невероятно, Знаете ли вы @Alpan, как это работает с awesom-производительностью ??? – Rumit

+0

+1 для хорошего брата. –

+0

Это было золото. Завершение его в LinearLayout - это то, что он сделал. –

1

Как вы упоминаете проблему,

Вопросы

Ваш XML-файл ресурсов (макет) не оптимальным образом. Поскольку руководство для Android не использует статические высоты и вес для ViewGroup. Пожалуйста, прочитайте http://developer.android.com/training/improving-layouts/optimizing-layout.html

Решение:

На мой взгляд, вы должны создать свой собственный класс для создания календаря view.In которую вы претендуете все свойства и атрибуты.

Я показываю демонстрационное приложение для просмотра Calender. http://www.androidviews.net/2013/01/ics-calendarview/ В этом приложении есть лучший способ использовать представление календаря. Также я уже Гаденыш URL для другого просмотра пользовательского календаря

В выше заявке, показывая правильный способ использовать CalendarView

Здесь я показываю снимок экрана для приложения Calenderview

enter image description hereenter image description hereenter image description here

Если любая проблема, пожалуйста, дайте мне знать, я буду создавать образец демо для того же.

+0

ваш ответ может быть полезен @Dwivedi ji, , но я не собираюсь использовать пользовательский календарь ..... – Rumit

+0

Здесь я хочу показать только, как правильно использовать календарь view В этом примере ... https://github.com/SimonVT/android-calendarview. это пример использования встроенного календаря с лучшим способом –

+0

спасибо @Dwivedi ji, это помогло мне использовать CalendarView. но как решение Альпана, с небольшими изменениями, моя работа окончена ... – Rumit

0

Включение CalendarView в FrameLayout решит проблему. Я протестировал ее, и она отлично работает без glitshing !!!

вот пример кода XML:

<?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> 
1

Ни один из вышеперечисленных ответов не работает для меня, я просто изменил ширину и высоту до «fill_parent» и теперь все отлично работает для меня.

<CalendarView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 
+0

странно. хотя «fill_parent» и «match_parent» должны работать одинаково. еще не проверено – Rumit

Смежные вопросы