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
и это, вероятно, вызывает его сокращение.
Также попытался установить отступ карты 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