Дочерние виды внутри MaterialCardView уменьшаются и исчезают - PullRequest
0 голосов
/ 03 января 2019

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;
            }
        }

После нескольких кликов:

Issue_image

Я пытался использовать другую компоновку 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

1 Ответ

0 голосов
/ 04 января 2019

Кажется, есть проблема с этим классом, из-за которой его заполнение контента продолжает увеличиваться после изменения значений StrokeWidth.

Попробуйте сбросить ContentPadding каждый раз, когда вы устанавливаете StrokeWith в 0 с этой строкой кода:

material_card.SetContentPadding(0, 0, 0, 0);

Надеюсь, это поможет .-

...