CalenderView 内容未显示
CalenderView content is not showing
所以我正在尝试 show/hide 按钮 click.But 上的日历视图最终只显示白色布局。
//xml
<android.support.constraint.ConstraintLayout
android:id="@+id/header_view"
android:elevation="@dimen/height4"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CalendarView
android:background="@color/white"
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@+id/date_view"
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="true"
android:paddingBottom="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent">
</CalendarView>
<android.support.constraint.ConstraintLayout
android:background="@color/white"
android:id="@+id/date_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
//some other layouts
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
我知道因为我将 calenderview 背景设置为白色,但内容也应该显示。查看输出图像
但是当我直接显示日历视图(将可见性设置为可见)时,它工作得很好,所以 xml 没有问题。
这就是我处理 calenderview
的 show/hide 的方式
private void setUpCalenderView() {
isCalenderVisible=!isCalenderVisible;
if (isCalenderVisible){
//((CalendarView) findViewById(R.id.calendarView)).setVisibility(View.VISIBLE);
((CalendarView) findViewById(R.id.calendarView)).setVisibility(View.VISIBLE);
}
else{
((CalendarView) findViewById(R.id.calendarView)).setVisibility(View.INVISIBLE);
}
}
编辑:
这是代码的要点:https://gist.github.com/ankurtagtaste/692335e71ed0576b1e852292536d0ebf
您必须更改:
android:visibility="visible"
使日历视图在 xml
中可见
您可以使用日期选择器来代替使用日历视图更改可见性
我刚试过这个效果很好:
<CalendarView
android:layout_width="match_parent"
android:layout_below="@+id/textView2"
android:layout_height="match_parent"
android:id="@+id/cal"
/>
想法是从您的布局中删除 android:visibility="invisible"
并以编程方式进行
cal=x.findViewById(R.id.cal);
cal.setVisibility(View.INVISIBLE);
textView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (cal.getVisibility()==View.VISIBLE)
cal.setVisibility(View.INVISIBLE);
else
cal.setVisibility(View.VISIBLE);
}
});
将 CalendarView 放在 RelativeLayout 上并更改此 RelativeLayout 的可见性。这对我有用。
<RelativeLayout
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CalendarView
android:id="@+id/calendar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
所以我正在尝试 show/hide 按钮 click.But 上的日历视图最终只显示白色布局。
//xml
<android.support.constraint.ConstraintLayout
android:id="@+id/header_view"
android:elevation="@dimen/height4"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CalendarView
android:background="@color/white"
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@+id/date_view"
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="true"
android:paddingBottom="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent">
</CalendarView>
<android.support.constraint.ConstraintLayout
android:background="@color/white"
android:id="@+id/date_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
//some other layouts
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
我知道因为我将 calenderview 背景设置为白色,但内容也应该显示。查看输出图像
但是当我直接显示日历视图(将可见性设置为可见)时,它工作得很好,所以 xml 没有问题。
这就是我处理 calenderview
的 show/hide 的方式private void setUpCalenderView() {
isCalenderVisible=!isCalenderVisible;
if (isCalenderVisible){
//((CalendarView) findViewById(R.id.calendarView)).setVisibility(View.VISIBLE);
((CalendarView) findViewById(R.id.calendarView)).setVisibility(View.VISIBLE);
}
else{
((CalendarView) findViewById(R.id.calendarView)).setVisibility(View.INVISIBLE);
}
}
编辑:
这是代码的要点:https://gist.github.com/ankurtagtaste/692335e71ed0576b1e852292536d0ebf
您必须更改:
android:visibility="visible"
使日历视图在 xml
中可见您可以使用日期选择器来代替使用日历视图更改可见性
我刚试过这个效果很好:
<CalendarView
android:layout_width="match_parent"
android:layout_below="@+id/textView2"
android:layout_height="match_parent"
android:id="@+id/cal"
/>
想法是从您的布局中删除 android:visibility="invisible"
并以编程方式进行
cal=x.findViewById(R.id.cal);
cal.setVisibility(View.INVISIBLE);
textView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (cal.getVisibility()==View.VISIBLE)
cal.setVisibility(View.INVISIBLE);
else
cal.setVisibility(View.VISIBLE);
}
});
将 CalendarView 放在 RelativeLayout 上并更改此 RelativeLayout 的可见性。这对我有用。
<RelativeLayout
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CalendarView
android:id="@+id/calendar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>