2015-05-29 68 views
0

我有相对布局。其中我有许多意见,如编辑文本,文本视图等。我做了很多动画。一切都很好。但有一点,我有一个要求。视图滑过布局

这是密码页。创建并确认密码。两个edittext一个接一个。如果密码不符合要求,普通的橙色视图应滑动并显示错误消息“密码无效”。

所以我把创建和确认密码线性布局。线性布局会向上滑动,让用户输入密码。验证之后,如果出现错误,则线性布局应向下滑动,并且普通视图将向上滑动。我保持视图不可见,并在需要时使其可见并编写代码以便向上滑动。当我使用单个编辑文本而不是线性布局时,相同的代码有效。但使用线性布局时不起作用。难道我做错了什么?

向其添加代码。此问题的特定代码开始直到编码结束

我声明线性布局为视图而不是VIEWGROUP。

编辑:做了分析后,我发现我试图向下滑动布局后滑动的视图隐藏在视图层次结构中的某处。

view.bringToFront()有助于将错误视图放在前面并向上滑动。

但之后的问题是,我的线性布局下滑后,错误视图不会马上滑动。因为我使用的是bringToFront(),所以它在整个屏幕上首先显示视图(背景颜色为橙色),然后开始滑动。

我不确定它是否正确,但我解决了这个问题。

  1. 无背景色已考虑到在一个布局slidingdown动画收听者的animationEnd()的视图
  2. 我用errorView.bringToFront()和errorView.setVisibility(真)。
  3. 我定义向上滑动的errorView动画布局的相同animationEnd()滑下听者
  4. 在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&apos;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

请直接输入任何不正确的编码

+0

你能发表一些代码吗? –

回答

0

我保持视图不可见,并且在需要时我将其视为可见并编写了代码以便向上滑动。

我认为你必须这样做在DialogFragment或自定义AlertDialog,将你的布局上面显示,如果不想做这个尝试包围你的RelativeLayout中的FrameLayout和增加它的LinearLayout例如但visout你的代码难于说这是什么问题