2

我正在使用一些动画显示和隐藏特定操作的视图,我使用了 LayoutTransition,它似乎工作正常,除了一件事,当动画进行时,一些 TextViews 的背景会更改并重置为默认的白色背景!

以下是我用来在隐藏/显示后应用动画的代码。

mRightTransitioner = new LayoutTransition();
mRightTransitioner.setDuration(1000);
vg_rightContainer.setLayoutTransition(mRightTransitioner);

编辑:即使我没有尝试过动画,同样的问题,一旦视图的位置发生变化,背景就会重置

编辑:这里我如何在 XML 中声明视图

<LinearLayout
        android:id="@+id/ll_req_reasonwrapper"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        android:baselineAligned="false"
        android:gravity="right"
        android:orientation="horizontal"
        android:visibility="gone" >

        <EditText
            android:id="@+id/et_req_reasons"
            android:layout_width="400dp"
            android:layout_height="match_parent"
            android:background="@drawable/comments_textbox"
            android:gravity="right|center_vertical"
            android:inputType="text"
            android:paddingRight="8dp" />

        <TextView
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:text="@string/str_req_preasons" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll_req_timewrapper"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp"
        android:baselineAligned="false"
        android:gravity="right"
        android:orientation="horizontal"
        android:visibility="gone" >

        <LinearLayout
            android:id="@+id/ll_req_endtimewrapper"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" >

            <TextView
                android:id="@+id/ftv_req_endtime"
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:background="@drawable/comments_textbox"
                android:freezesText="true"
                android:gravity="right|center_vertical"
                android:inputType="numberDecimal"
                android:paddingRight="8dp" />

            <TextView
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:text="@string/str_req_endtime" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ll_req_starttimewrapper"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="50dp" >

            <TextView
                android:id="@+id/ftv_req_starttime"
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:background="@drawable/comments_textbox"
                android:freezesText="true"
                android:gravity="right|center_vertical"
                android:inputType="numberDecimal"
                android:paddingRight="8dp" />

            <TextView
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:gravity="center_vertical"
                android:text="@string/str_req_starttime" />
        </LinearLayout>
    </LinearLayout>

例如:如果我隐藏 'll_req_reasonwrapper',则 LinearLayout 'll_req_timewrapper' 向上移动,然后 textViews 的背景,如 'ftv_req_starttime' 变为白色!!

请帮忙。

4

2 回答 2

0

编辑的答案:如果您使用的是线性布局,那么如果没有显示孩子,那么它不会被布置并且不会成为测量的一部分(看起来像)。我推荐使用RelativeLayout。

你可以试试

android:background="@null"

为您的按钮。如果您正在为按钮使用一些自定义类,则添加

.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

对于这个具体的意见。

于 2014-03-18T12:23:22.983 回答
0

需要更多代码。禁用 LayoutTransition 并不能解决您的问题,这意味着动画不是问题。

您如何重新实例化子视图或填充您的视图。您是否使用 setVisibility(View.GONE) 删除视图,然后使用 setVisibility(View.VISIBLE) 将其设置回来

或者

您是否删除 childAt(i) 然后动态添加自定义视图

很抱歉,我无法添加评论,因为我没有这方面的声誉,但我想如果您发布更多代码,我可以回答您的问题。

于 2014-03-18T15:13:07.717 回答