我只想显示CalendarView
的这一部分,不显示日历
这样只有日期和箭头可见。
我找不到是否应该自己实现它,或者是否有一些解决方法或其他一些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/