android - 如何在 CalendarView 中仅显示日期栏?

标签 android user-interface material-design android-calendar

我只想显示CalendarView的这一部分,不显示日历

this

itself这样只有日期和箭头可见。


我找不到是否应该自己实现它,或者是否有一些解决方法或其他一些View可以帮助我实现这种外观。

提前致谢。

最佳答案

您可以通过创建自定义当前日期 View 来获取它,如下所示,

--------activity_main.xml --------

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/margin_60dp"
    android:orientation="horizontal"
    android:paddingTop="@dimen/margin_10dp"
    android:paddingBottom="@dimen/margin_10dp">
    <ImageButton
        android:id="@+id/backBtn"
        android:layout_width="@dimen/margin_40dp"
        android:layout_height="@dimen/margin_40dp"
        android:layout_margin="@dimen/margin_10dp"
        android:layout_gravity="center"
        android:background="@drawable/ic_action_back" />
    <TextView
        android:id="@+id/current_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="Current Date"
        android:textSize="18sp"
        android:textStyle="bold" />
    <ImageButton
        android:id="@+id/nextBtn"
        android:layout_width="@dimen/margin_40dp"
        android:layout_gravity="center"
        android:layout_height="@dimen/margin_40dp"
        android:layout_margin="@dimen/margin_10dp"
        android:background="@drawable/ic_action_next" />
</LinearLayout>

------MainActivity.java ------

public class MainActivity extends AppCompatActivity {
ImageButton nextBtn, backBtn;
TextView CurrentDate;
private static final int MAX_CALENDAR_DAYS = 42;
Calendar calendar = Calendar.getInstance(Locale.ENGLISH);
List<Date> dates = new ArrayList<>();
SimpleDateFormat dateFormat = new SimpleDateFormat("MMMM YYYY", Locale.ENGLISH);
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    backBtn = (ImageButton) findViewById(R.id.backBtn);
    nextBtn = (ImageButton) findViewById(R.id.nextBtn);
    CurrentDate = (TextView) findViewById(R.id.current_date);
    backBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            calendar.add(Calendar.MONTH, -1);
            SetUpCalendar();
        }
    });
    nextBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            calendar.add(Calendar.MONTH, 1);
            SetUpCalendar();
        }
    });
}
private void SetUpCalendar() {
    String currentDate = dateFormat.format(calendar.getTime());
    CurrentDate.setText(currentDate);
    dates.clear();
    Calendar monthCalendar = (Calendar) calendar.clone();
    monthCalendar.set(Calendar.DAY_OF_MONTH, 1);
    int FirstDayofMonth = monthCalendar.get(Calendar.DAY_OF_WEEK) - 1;
    monthCalendar.add(Calendar.DAY_OF_MONTH, -FirstDayofMonth);
    while (dates.size() < MAX_CALENDAR_DAYS) {
        dates.add(monthCalendar.getTime());
        monthCalendar.add(Calendar.DAY_OF_MONTH, 1);
    }
}

}

这可能会帮助你!

关于android - 如何在 CalendarView 中仅显示日期栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56916153/

相关文章:

android - 如何为 RenderScript 输出分配 bool 数组?

java - JFrame.setBounds 不适用于小值

user-interface - 如何更改 NativeScript 标签的文本

android MaterialDialog 未关闭

Android-Widget : Changing ListView selector color using RemoteView

android - 如何为导航栏图标设置边距?

android - 每次我们想在应用程序中更改字体时,我们是否必须复制 Font TTF

Android 按钮可绘制不显示

c# - WPF Material Design 按钮悬停

material-design - Flutter:如何使卡片可点击?