2016-09-18 116 views
7

我可以知道如何在Android中调整CalendarView的尺寸吗? CalendarView占据了屏幕的一半以上。 我希望使它更小,也许屏幕的40%。谢谢。在我的智能手机如何缩小CalendarView的大小?

默认CalendarView大小,占据了一半以上

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

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

在这里发布你的XML – SripadRaj

+0

@SripadRaj我更新了我的帖子。希望你能帮助。谢谢。 –

+0

我面临同样的问题任何人有解决方案请帮助 –

回答

1

有几种不同的方法可以缩减CalendarView的大小。一种是您可以手动调整使用日历的.XML文件中视图的大小。另一种方法是创建新布局(如线性布局),将布局调整为所需的大小,然后将该布局中的CalendarView。

+0

1.手动调整.XML文件中视图的大小:这是否意味着我需要更改layout_height的值?我用200dp做出高度,它不起作用。 2.我创建了宽度为500dp和高度为200dp的新线性布局,将calendarView放在该布局中。结果与第一种方法类似。 我在帖子中插入了我的xml代码。 –

1

这里我把代码减少到calander view的这个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> 
+0

比例不保持 –

+0

所以,你需要什么?根据问题他/她想要大小40%的屏幕。 – Vasant

+0

我想要矩形压光机占用的空间非常少,高度和宽度必须是match_parent –

3

我认为CalendarView不是(真正)可调整大小的,因为Android会调整此视图的大小以允许用户使用此视图获得很好的体验。 我认为社区大小是当使用DatePickerDialog。 DatePickerDialog

CalendarView需要最小的高度和宽度。

如果你真的要调整你的calendarView,也许尝试调整(或比例)以编程方式与此:

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

+0

scalingFactor延伸日期文本以及看起来不好 –

+1

所以...正如我所说的,Android优化了这一点小部件以获得更好的用户体验。也许你可以尝试扩展CalendarView类,找到布局并定制它(比如txtView.setTextSize())。 – Cocorico

1

你可以尝试这样的:

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

希望这可能有助于缩小日历视图的大小。

<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(可扩展DP),使其在众多的屏幕大小帮助

摇篮为

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> 
0

我已经尝试了以上所有的答案,但不是工作什么我想要什么。然后稍后我有用户[Material Calender View] [1]

[1]:https://github.com/prolificinteractive/material-calendarview。在那我们可以给我们的要求瓷砖宽度和瓷砖高度。如果我们想要与宽度相比高度更小的矩形压延视图,我们可以设置宽度而不是高度。谢谢所有回答的人。