Как уменьшить размер CalendarView?

Могу ли я узнать, как изменить размер CalendarView в Android? CalendarView занимало больше половины экрана. Я хочу сделать его меньше, возможно, 40% экрана. Спасибо.

Размер CalendarView по умолчанию на моем смартфоне, занят больше половины

Просмотр календаря

Мой текущий XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ada.landing.MainActivity">

<CalendarView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/calendarView"
    android:firstDayOfWeek="2"/></RelativeLayout>

Я попробовал другой способ определить CalendarView, но общая высота уменьшилась, но не уменьшилась в соотношении:

Просмотр календаря

<CalendarView
            android:layout_width="500dp"
            android:layout_height="200dp"
            android:id="@+id/calendarView"
            android:firstDayOfWeek="2" />

person CHAN HAU YEEN    schedule 18.09.2016    source источник
comment
выложи сюда свой xml   -  person SripadRaj    schedule 18.09.2016
comment
@SripadRaj Я обновил свой пост. Надеюсь, вы можете помочь. Спасибо.   -  person CHAN HAU YEEN    schedule 19.09.2016
comment
Столкнулся с такой же проблемой у кого есть решение помогите пожалуйста   -  person Rajesh Nasit    schedule 19.05.2017
comment
используйте показатели отображения и укажите размер в зависимости от размера экрана   -  person Dina Gar    schedule 19.05.2017
comment
@RajeshNasit, я вижу совершенно другой виджет, когда использую CalendarView. Можете ли вы указать, как получить фактический виджет, который опубликован в вопросе?   -  person azizbekian    schedule 22.05.2017
comment
его встроенный контроллер Android после API 11. проверьте его для получения дополнительной информации developer.android.com/reference/android/widget/< /а>   -  person Rajesh Nasit    schedule 22.05.2017
comment
@CHANHAUYEEN, используйте эту библиотеку вместо github.com/SundeepK/CompactCalendarView.   -  person Radhey    schedule 24.05.2017


Ответы (7)


Я думаю, что CalendarView не (на самом деле) изменяемый размер, потому что Android адаптирует размер этого представления, чтобы пользователь мог получить отличный опыт использования этого представления. Я думаю, что общий размер - это когда используется DatePickerDialog. DatePickerDialog

Для CalendarView требуется минимальная высота и ширина.

Если вы действительно хотите изменить размер своего календаря, попробуйте изменить его размер (или масштаб) программно с помощью этого:

float scalingFactor = 0.5f; // scale down to half the size view.setScaleX(scalingFactor); view.setScaleY(scalingFactor);

person Cocorico    schedule 19.05.2017
comment
ScalingFactor также растягивает текст даты, что выглядит плохо - person Rajesh Nasit; 19.05.2017
comment
Итак... как я уже сказал, Android оптимизирует этот виджет для лучшего взаимодействия с пользователем. Возможно, вы можете попытаться расширить класс CalendarView, найти макет и настроить его (например, txtView.setTextSize() ). - person Cocorico; 19.05.2017

Есть несколько способов уменьшить размер CalendarView. Во-первых, вы можете вручную настроить размер представления в файле .XML, в котором вы используете календарь. Другой способ — создать новый макет (например, линейный макет), настроить макет до нужного размера и поместить CalendarView в этом макете.

person PellyTheProgrammer    schedule 18.09.2016
comment
1. Вручную отрегулируйте размер представления в файле .XML: значит ли это, что мне нужно изменить значение layout_height? Я делаю высоту с 200dp, это не работает. 2. Я создал новый линейный макет шириной 500 dp и высотой 200 dp, поместил в него CalendarView. Результат аналогичен первому способу. Я вставил свой xml-код в сообщение. - person CHAN HAU YEEN; 19.09.2016

Вы можете попробовать так:

<?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:weightSum="5"
              android:orientation="vertical">
    <LinearLayout android:layout_width="match_parent" android:layout_height="0dp"
                  android:layout_weight="2">
        <CalendarView
            android:id="@+id/calendarView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:firstDayOfWeek="2"/>
    </LinearLayout>
    <LinearLayout android:layout_width="match_parent" android:layout_height="0dp"
                  android:layout_weight="3"></LinearLayout>
</LinearLayout>
person omor    schedule 22.05.2017

Надеюсь, это поможет уменьшить размер представления календаря.

<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="wrap_content"
        android:layout_height="wrap_content">

    <CalendarView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:id="@+id/calendarView"
        android:firstDayOfWeek="2"/>
        </LinearLayout>
    <LinearLayout
        android:layout_weight="60"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:text="Hello World hello world "
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    </LinearLayout>

Теперь есть библиотека, которая позволяет вам установить размер dp в sdp (Scalable Dp), так что это поможет во многих размерах экрана.

Gradle для этого

compile 'com.intuit.sdp:sdp-android:1.0.3'

Пример кода Тот же пример выше, но он будет поддерживать все возможные размеры экрана.

<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="wrap_content"
        android:layout_height="wrap_content">


    <CalendarView
        android:layout_width="@dimen/_100sdp"
        android:layout_height="@dimen/_100sdp"
        android:id="@+id/calendarView"
        android:firstDayOfWeek="2"/>
        </LinearLayout>
    <LinearLayout
        android:layout_weight="60"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:text="Hello World hello world "
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    </LinearLayout>
person Pratik Vyas    schedule 23.05.2017

если вы хотите изменить размер

 android:scaleY="1.1" -vertically
person Subhash Chandru    schedule 20.03.2018

Здесь я помещаю код, который уменьшает ширину представления календаря до 40%. Попробуйте это.

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="0.4"
        android:orientation="horizontal"
        android:weightSum="1">

        <CalendarView
            android:id="@+id/calendarView"
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight="0.4"
            android:firstDayOfWeek="2" />


    </LinearLayout>
</LinearLayout>
person Vasant    schedule 19.05.2017
comment
соотношение не соблюдается - person Rajesh Nasit; 19.05.2017
comment
Итак, что вам нужно? Согласно вопросу, он / она хочет размер 40% экрана. - person Vasant; 19.05.2017
comment
Я хочу прямоугольный календарь с очень меньшим пространством, занимаемым по высоте и ширине, должен быть match_parent - person Rajesh Nasit; 19.05.2017
comment
я узнал, что это невозможно. он пытается настроить шрифт на определенный размер, но после того, как он обрезает текст представления календаря, мы можем выполнить функциональность с помощью диалога. здесь нам нужно сделать любое представление любого размера, который вы хотите. При щелчке этого представления отображается одно диалоговое окно, в котором будет отображаться полный календарь. Теперь мы можем выбрать дату и месяц, год. Затем при нажатии кнопки OK в диалоговом окне он закрывается. - person Vasant; 19.05.2017
comment
@RajeshNasit Пусть CHAN HAU YEEN прокомментирует ответ. Как он поставил вопрос с щедростью. И требование зависит от него, а не от вас, я думаю - person Sreehari; 24.05.2017
comment
@Stallion, я назначил награду. он только что задал вопрос - person Rajesh Nasit; 24.05.2017
comment
@RajeshNasit О, мой плохой ... У вас есть все авторы в мире, чтобы комментировать и предлагать :) - person Sreehari; 24.05.2017

Я пробовал прежде всего ответить, но не о работе, что именно я хочу. Затем позже у меня есть пользователь Material Calender View.

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

person Rajesh Nasit    schedule 26.05.2017