我有相对布局。其中我有许多意见,如编辑文本,文本视图等。我做了很多动画。一切都很好。但有一点,我有一个要求。视图滑过布局
这是密码页。创建并确认密码。两个edittext一个接一个。如果密码不符合要求,普通的橙色视图应滑动并显示错误消息“密码无效”。
所以我把创建和确认密码线性布局。线性布局会向上滑动,让用户输入密码。验证之后,如果出现错误,则线性布局应向下滑动,并且普通视图将向上滑动。我保持视图不可见,并在需要时使其可见并编写代码以便向上滑动。当我使用单个编辑文本而不是线性布局时,相同的代码有效。但使用线性布局时不起作用。难道我做错了什么?
向其添加代码。此问题的特定代码开始直到编码结束
我声明线性布局为视图而不是VIEWGROUP。
编辑:做了分析后,我发现我试图向下滑动布局后滑动的视图隐藏在视图层次结构中的某处。
view.bringToFront()有助于将错误视图放在前面并向上滑动。
但之后的问题是,我的线性布局下滑后,错误视图不会马上滑动。因为我使用的是bringToFront(),所以它在整个屏幕上首先显示视图(背景颜色为橙色),然后开始滑动。
我不确定它是否正确,但我解决了这个问题。
- 无背景色已考虑到在一个布局slidingdown动画收听者的animationEnd()的视图
- 我用errorView.bringToFront()和errorView.setVisibility(真)。
- 我定义向上滑动的errorView动画布局的相同animationEnd()滑下听者
- 在errorView的animationStart()向上滑动动画监听器,我所定义的errorView的背景颜色。现在它按预期工作。
但让我知道更好的做法。
//声明
查看greyView,orangeView,yellowView,蓝景,orangeErrorView,letsGetStartedView,welcomeBckView,passwordMasterLayout,orangePwdErrorView; TextView welcomeText,errorTextView,letsGetStartedTextView,welcomeBckTxtView,errorPwdMsg;
//密码错误处理
orangePwdErrorView = v.findViewById(R.id.orangePasswordErrorView);
errorPwdMsg = (TextView) v.findViewById(R.id.errorPasswordMessage);
//布局代码
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sample_main_layout">
<FrameLayout
android:id="@+id/sample_content_fragment"
android:layout_weight="76.4"
android:layout_width="match_parent"
android:layout_height="0px" />
<FrameLayout
android:id="@+id/bottomPanel"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="23.6">
</FrameLayout>
</LinearLayout>
sample_content_fragment的FrameLayout采取下面的代码
<RelativeLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<View
android:id="@+id/grey"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#58595B" />
<View
android:id="@+id/orange"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F26724"
android:visibility="invisible" />
<View
android:id="@+id/yellow"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FDB518"
android:visibility="invisible" />
<View
android:id="@+id/blue"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#1893D2"
android:visibility="invisible" />
<TextView
android:layout_width="260dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/welcome"
android:id="@+id/welcomeTextView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="51dp"
android:textColor="#ffffff"
android:textSize="20dp"
android:textStyle="bold"
android:visibility="invisible"
/>
<ImageView
android:layout_height="60dp"
android:layout_width="60dp"
android:id="@+id/clinicloud_logo"
android:clickable="true"
android:src="@drawable/clinicloud_icon"
android:layout_marginRight="50dp"
android:layout_alignParentStart="true"
android:layout_marginStart="35dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="40dp" />
<View
android:id="@+id/orangeErrorView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F26724"
android:visibility="invisible" />
<EditText
android:layout_width="match_parent"
android:layout_height="90dp"
android:inputType="textEmailAddress"
android:ems="10"
android:id="@+id/emailEditText"
android:text="@string/enter_email"
android:layout_gravity="center"
android:background="#f4f4f4"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:visibility="invisible"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/errorMessage"
android:layout_alignTop="@+id/welcomeTextView"
android:layout_centerHorizontal="true"
android:textColor="#ffffff"
android:visibility="invisible"/>
<!--UI components for welcome back page-->
<View
android:id="@+id/welcomeBackView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#134F9F"
android:visibility="invisible" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_back"
android:id="@+id/welcomeBackTxtView"
android:textColor="#ffffff"
android:layout_alignTop="@+id/welcomeTextView"
android:layout_alignStart="@+id/clinicloud_logo"
android:textSize="20dp"
android:textStyle="bold"
android:visibility="invisible"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="90dp"
android:ems="10"
android:id="@+id/password"
android:layout_alignTop="@+id/emailEditText"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:text="Password"
android:visibility="invisible"
android:background="#d2d1d1"
/>
<!--UI components for Let's get started page-->
<View
android:id="@+id/letsGetStartedView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#5C3A91"
android:visibility="invisible" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Let's get started"
android:id="@+id/letsGetStartedTxtView"
android:textColor="#ffffff"
android:layout_alignTop="@+id/welcomeTextView"
android:layout_alignStart="@+id/clinicloud_logo"
android:textSize="20dp"
android:textStyle="bold"
android:visibility="invisible"/>
<!--Linear layout to show the create and confirm password-->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="180dp"
android:gravity="bottom"
android:layout_alignBottom="@+id/emailEditText"
android:layout_alignParentStart="true"
android:weightSum="1"
android:id="@+id/passwordMasterView"
android:visibility="invisible">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:id="@+id/createPwd"
android:layout_weight="0.50"
android:background="#F4F4F4"
android:text="@string/create_password"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:id="@+id/confirmPwd"
android:layout_weight="0.50"
android:background="#E3E3E3"
android:text="@string/confirm_password" />
</LinearLayout>
<!-- To show password errors-->
<LinearLayout
android:id="@+id/orangePasswordErrorView"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F26724"
android:visibility="invisible" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/errorPasswordMessage"
android:layout_alignTop="@+id/welcomeTextView"
android:layout_centerHorizontal="true"
android:textColor="#ffffff"
android:visibility="invisible"
/>
<!-- To show password errors-->
</RelativeLayout>
的java的逻辑是在https://stackoverflow.com/questions/30523599/sliding-up-and-down-android
请直接输入任何不正确的编码
你能发表一些代码吗? –