Масштаб Календаря, но вписывается в границы - PullRequest
0 голосов
/ 25 октября 2019

У меня ограниченное пространство в макете, и CalendarView занимает большую его часть.

Я пытаюсь уменьшить его размер, и так как я не смог найти способ уменьшить пространство внутри, я пытаюсьиспользуйте ScaleX и ScaleY.

Однако, когда я использую это, он сжимает календарь внутри своего макета, но затем у меня появляются тонны пустого пробела следующим образом (отмечены желтым цветом):

enter image description here

Есть ли какой-нибудь способ переместить сжатый календарь в конец его макета?

Это мой XML:

<CalendarView
    android:id="@+id/cv_BorrowCalendar"
    android:layout_width="match_parent"
    android:layout_height="290dp"
    android:layout_marginStart="16dp"
    android:layout_marginEnd="16dp"
    android:background="@drawable/cv_background"
    android:dateTextAppearance="@style/CalenderViewDateCustomText"
    android:scaleY="0.81"
    android:scaleX="0.9"
    android:theme="@style/CalenderViewCustom"
    android:weekDayTextAppearance="@style/CalenderViewWeekCustomText"
    app:layout_constraintBottom_toTopOf="@+id/btn_Done"
    app:layout_constraintTop_toBottomOf="@+id/rv_Borrowing" />

1 Ответ

1 голос
/ 26 октября 2019

Вариант 1:

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

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

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

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

Вариант 2:

Нет. Вы не можете уменьшить размер представления сверх их минимального размера. Использование wrap_content гарантирует, что DatePicker будет достаточно большим, чтобы вместить его содержимое.

<DatePicker
   android:id="@+id/datePicker"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:calendarViewShown="false"
   android:scaleX=".5"
   android:scaleY=".5" />
...