android - MaterialCardView 内的子视图缩小和消失
问题描述
android.support.design.card.MaterialCardView
已在本机axml
布局中使用并具有如下子视图,我的目标是在发生某些事件时不断切换边框,即中风,例如:按钮单击并还原它,但是strokeWidth
子视图中的每一次变化都会逐渐缩小,最后是宽度和高度变为 0 使内部视图完全消失。
MaterialCardView 布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
app:cardCornerRadius="10dp"
app:strokeColor="#123456"
app:strokeWidth="3dp"
android:id="@+id/material_card"
android:padding="5dp"
android:layout_gravity="center_horizontal">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="240dp"
android:orientation="vertical"
android:padding="8dp"
android:id="@+id/linearLayoutCard">
<Button android:id="@+id/button"
android:text="Click me"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/textview"
android:text ="Border in"
android:layout_below="@id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.design.card.MaterialCardView>
PageRenderer 代码
public void OnClick(Android.Views.View v)
{
// throw new NotImplementedException();
if (_yes)
{
material_card.StrokeColor = Android.Graphics.Color.ParseColor("#FFFFFF");
material_card.StrokeWidth = 0;
//material_card.LayoutParameters.LayoutAnimationParameters
linearLayoutCard?.SetMinimumHeight(material_card.Height+20);
linearLayoutCard?.SetMinimumWidth(material_card.Width+20);
linearLayoutCard.SetPadding(0, 0, 0, 0);
textview.Text = "Border out";
_yes = false;
// return true;
}
else
{
material_card.StrokeColor = Android.Graphics.Color.ParseColor("#123456");
material_card.StrokeWidth = 20;
linearLayoutCard?.SetMinimumHeight(material_card.Height);
linearLayoutCard?.SetMinimumWidth(material_card.Width);
linearLayoutCard.SetPadding(0, 0, 0, 0);
textview.Text = "Border in";
_yes = true;
//return true;
}
}
点击几下后:
我尝试使用其他有效的布局RelativeLayout
,还尝试增加 LinearLayout 的高度和宽度,并将填充设置为 0 到 min ,如上所示,这也不起作用,在调试时我注意到 Padding 被触发MaterialCardView
并且可能导致它缩小它下来。还尝试将cardview的填充设置为0,但仍然没有运气。
material_card.SetPadding(0, 0, 0, 0);
linearLayoutCard.LayoutParameters.Width = material_card.Width;
linearLayoutCard.LayoutParameters.Height =material_card.Height;
为什么内部视图没有设置为更高的宽度,因为它映射到match_parent
/ fill_parent
?
Github 上的完整代码:github.com/pmahend1/TestMaterialCardView
解决方案
此类似乎存在一个问题,导致其内容填充在更改StrokeWidth
值后不断增加。
每次使用以下代码将 设置为0时,尝试重置ContentPadding:StrokeWith
material_card.SetContentPadding(0, 0, 0, 0);
希望这可以帮助。-
推荐阅读
- python - 为什么要在我的 Mac 上使用 Selenium webdriver 在本地执行 JS,而不是在 Docker 容器中?
- firebase - 为 MLKit 构建视觉模型的紧凑子集
- python-3.x - 这个错误是怎么发生的?AttributeError:“ListAdapter”对象没有属性“适配器”
- .net-core - 实体框架核心附加/更新子对象
- ionic-framework - 如何在 ionic 3 中包含自定义字体?
- list - 如何链接可扩展列表的特定行?
- java - JTextField 定位/布局问题
- javascript - Angular 项目,ng-app 指令仅在 vendor.bundle.js.map 中找到
- java - 如何在不使用 Java 中的模式匹配的情况下匹配字符串中的多个文本?
- java - 流入 orElse 的可选