Android 滚动视图重叠

Android 滚动视图重叠,android,android-layout,button,scrollview,splash-screen,Android,Android Layout,Button,Scrollview,Splash Screen,我正在建立一个简单的飞溅屏幕。splashscreen有两个按钮:登录和注册。用户单击登录后,我将加载一个布局,其中包含两个用于输入凭据的edittext字段,一个用于继续登录的按钮,以及一个用于返回初始屏幕的取消按钮。登录布局写在滚动视图中。但是,当我单击取消按钮时,滚动视图似乎仍然存在。我曾尝试将scrollview的可见性设置为已消失,但这会使我的应用程序崩溃。我试图将可见性设置为不可见,这也会使我的应用程序崩溃。我做了很多谷歌搜索,似乎没有解决办法 package com.praveen

我正在建立一个简单的飞溅屏幕。splashscreen有两个按钮:登录和注册。用户单击登录后,我将加载一个布局,其中包含两个用于输入凭据的edittext字段,一个用于继续登录的按钮,以及一个用于返回初始屏幕的取消按钮。登录布局写在滚动视图中。但是,当我单击取消按钮时,滚动视图似乎仍然存在。我曾尝试将scrollview的可见性设置为已消失,但这会使我的应用程序崩溃。我试图将可见性设置为不可见,这也会使我的应用程序崩溃。我做了很多谷歌搜索,似乎没有解决办法

package com.praveen.loginregi.app;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;


public class MainActivity extends ActionBarActivity implements View.OnClickListener{
    Button signin;
    Button signup;
    Button cancel;
    Button signincancel;

    RelativeLayout login,register;
    LinearLayout fromsignin,selectsingn,fromactvitysignup;
    ScrollView sc;
    ScrollView sc1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        signin=(Button)findViewById(R.id.btnSingIn);
        signup=(Button)findViewById(R.id.btnSignUp);
        login=(RelativeLayout)findViewById(R.id.rl);
        register=(RelativeLayout)findViewById(R.id.rl1);
        cancel=(Button)findViewById(R.id.btncancel);
        signincancel=(Button)findViewById(R.id.btnSingIncancel);
        sc=(ScrollView)findViewById(R.id.sc);
        sc1=(ScrollView)findViewById(R.id.sc1);

        fromsignin=(LinearLayout)findViewById(R.id.from_actvity_sign_in);
        selectsingn=(LinearLayout)findViewById(R.id.selectsingn);
        fromactvitysignup =(LinearLayout)findViewById(R.id.from_actvity_sign_up);
        signin.setOnClickListener(this);
        signup.setOnClickListener(this);
        cancel.setOnClickListener(this);
        signincancel.setOnClickListener(this);

        selectsingn.setVisibility(View.VISIBLE);



    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnSignUp:

                System.out.println("hhhijoihhohouhouhhhjhjhkkhgjgggjghjhgjhhhg");


                selectsingn.setVisibility(View.INVISIBLE);
                selectsingn.setVisibility(View.GONE);




                register.setVisibility(View.VISIBLE);
                fromactvitysignup.setVisibility(View.VISIBLE);
                Animation ani2 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);
                fromactvitysignup.startAnimation(ani2);




                return;


        case R.id.btnSingIn:
                System.out.println("djksfhjksdhdjkfhskjdhdskfjhfdkjhfksdjdfshkj");


                selectsingn.setVisibility(View.INVISIBLE);

                login.setVisibility(View.INVISIBLE);


                selectsingn.setVisibility(View.GONE);



                fromsignin.setVisibility(View.VISIBLE);
                login.setVisibility(View.VISIBLE);

                Animation ani = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);
                fromsignin.startAnimation(ani);
                return;

            case R.id.btncancel:




                register.setVisibility(View.INVISIBLE);
                register.setVisibility(View.GONE);
                fromactvitysignup.setVisibility(View.GONE);

                selectsingn.setVisibility(View.VISIBLE);
                sc1.setVisibility(View.INVISIBLE);




                return;

            case R.id.btnSingIncancel:


                login.setVisibility(View.INVISIBLE);
                login.setVisibility(View.GONE);


                selectsingn.setVisibility(View.VISIBLE);
                fromsignin.setVisibility(View.VISIBLE);



                return;

            default:
                selectsingn.setVisibility(View.GONE);
                fromsignin.setVisibility(View.GONE);
                register.setVisibility(View.GONE);
                fromactvitysignup.setVisibility(View.GONE);


        }

    }
}
XML主布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingBottom="@dimen/activity_vertical_margin"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                tools:context=".MainActivity"
                android:background="@drawable/fire_logo">



    <LinearLayout
            android:id="@+id/from_actvity_sign_in"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone">

        <include
                android:id="@+id/myid2"
                layout="@layout/activity_sign_in" />
    </LinearLayout>


    <LinearLayout
            android:id="@+id/from_actvity_sign_up"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone">

        <include
                android:id="@+id/myid3"
                layout="@layout/activity_sign_up_screen" />
    </LinearLayout>


    <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="@drawable/linearlayout_bg"
            android:id="@+id/selectsingn"
            android:padding="10dp"
            android:visibility="gone"
            >

        <Button
                android:id="@+id/btnSignUp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:layout_margin="4dp"
                android:text="Sign Up"
                android:background="@drawable/button_default_bg"
                style="@style/DefaultButtonText"
                />
        <Button
                android:id="@+id/btnSingIn"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:layout_margin="4dp"
                android:text="Sign In"
                style="@style/DefaultButtonText"
                android:background="@drawable/button_default_bg"
                />
    </LinearLayout>

</RelativeLayout>




 Signin Layout/Signup Layout
注册Xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#80000000"
            android:id="@+id/sc1"
        >
    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            android:id="@+id/rl1"
            android:background="#ffffff"
            android:layout_gravity="center" >

        <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:padding="10dp"
                >

            <EditText
                    android:id="@+id/etEmail"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/edittext_top_bg"
                    android:padding="10dp"
                    android:hint="Email"
                    android:textColorHint="#bbbbbb"
                    />
            />/ android:drawableLeft="@drawable/email"/>
            <EditText
                    android:id="@+id/etUserName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/edittext_default_bg"
                    android:layout_marginTop="-2dp"
                    android:padding="10dp"
                    android:hint="User Name"
                    android:textColorHint="#bbbbbb"
                    />
            />/  android:drawableLeft="@drawable/user"/>
            <EditText
                    android:id="@+id/etPass"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/edittext_bottom_bg"
                    android:layout_marginTop="-2dp"
                    android:padding="10dp"
                    android:hint="Password"
                    android:textColorHint="#bbbbbb"
                    android:password="true"/>
            //android:drawableLeft="@drawable/password"/>
            <Button
                    android:id="@+id/btnSignUpp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="10dp"
                    android:layout_margin="4dp"
                    android:text="Sign Up"
                    style="@style/DefaultButtonText"
                    android:background="@drawable/button_default_bg"
                    />


            <Button
                    android:id="@+id/btncancel"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="10dp"
                    android:layout_margin="4dp"
                    android:text="cancel"
                    style="@style/DefaultButtonText"
                    android:background="@drawable/button_default_bg"
                    />
        </LinearLayout>

    </RelativeLayout>
</ScrollView>

/>/android:drawableLeft=“@drawable/email”/>
/>/android:drawableLeft=“@drawable/user”/>
//android:drawableLeft=“@drawable/password”/>

简短回答:

您的问题是您正在更改
@+id/rl1
的可见性,这是嵌套在
activity\u sign\u in.xml
中的
滚动视图
中的相对视图,因此当您单击取消并使
相对视图
不可见时,具有半透明背景的
滚动视图
仍然可见

我认为最简单的解决方案是使用您在include标记中定义的id(变量
fromsignin
)来打开/关闭可见性

更长的回答:

看着你的布局,我不明白你为什么不使用
对话框来显示登录,因为你实际上使用
滚动视图来加深背景,然后将
线性布局
嵌套在
相对视图
中。老实说,我不明白你为什么需要这种结构,你可以通过将登录显示为
对话框
内容并从布局中删除
滚动视图
相对视图
来轻松实现同样的效果。 由于我没有动画文件,我只是没有使用它,所以可能这就是为什么你要使用这种结构,但是
RelativeLayout
对我来说似乎没用,因为你可以用重心标记居中

编辑: 我刚刚测试了这个,它与您的源代码和布局配合得很好。 将
R.id.btnSingIncancel
开关盒中的
从登录更改为可见性

case R.id.btnSingIncancel:
                login.setVisibility(View.INVISIBLE);  //this can be deleted
                login.setVisibility(View.GONE);       //this too, and redundant as well.
                selectsingn.setVisibility(View.VISIBLE);
                fromsignin.setVisibility(View.GONE);    //This line is the important one!
                return;

请在此处添加您的xml代码发布您的xml文件。。!!请尝试post xml和logcat。您的文件将无法编译,缺少内容:R.id.btncancel R.id.rl1 R.id.sc1Sc1在我的其他xml文件注册中,这是我的登录xml文件。。。。我没有发布它,因为它是同一个代码谢谢你momo的回复,但是没有。隐藏符号不起作用,我在google中查找对话框,代码似乎更繁琐。请使用此上下文向我推荐解决方案。我添加了一个示例,请检查;-)否:(我已经试过了,又试过了……如果你点击取消,背景会被滚动视图填满,启动屏幕->登录->取消启动屏幕->注册->取消启动屏幕->登录->无法访问任何按钮当我切换到登录时,我无法点击任何按钮,滚动视图会阻止它
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#80000000"
            android:id="@+id/sc1"
        >
    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            android:id="@+id/rl1"
            android:background="#ffffff"
            android:layout_gravity="center" >

        <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:padding="10dp"
                >

            <EditText
                    android:id="@+id/etEmail"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/edittext_top_bg"
                    android:padding="10dp"
                    android:hint="Email"
                    android:textColorHint="#bbbbbb"
                    />
            />/ android:drawableLeft="@drawable/email"/>
            <EditText
                    android:id="@+id/etUserName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/edittext_default_bg"
                    android:layout_marginTop="-2dp"
                    android:padding="10dp"
                    android:hint="User Name"
                    android:textColorHint="#bbbbbb"
                    />
            />/  android:drawableLeft="@drawable/user"/>
            <EditText
                    android:id="@+id/etPass"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@drawable/edittext_bottom_bg"
                    android:layout_marginTop="-2dp"
                    android:padding="10dp"
                    android:hint="Password"
                    android:textColorHint="#bbbbbb"
                    android:password="true"/>
            //android:drawableLeft="@drawable/password"/>
            <Button
                    android:id="@+id/btnSignUpp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="10dp"
                    android:layout_margin="4dp"
                    android:text="Sign Up"
                    style="@style/DefaultButtonText"
                    android:background="@drawable/button_default_bg"
                    />


            <Button
                    android:id="@+id/btncancel"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:padding="10dp"
                    android:layout_margin="4dp"
                    android:text="cancel"
                    style="@style/DefaultButtonText"
                    android:background="@drawable/button_default_bg"
                    />
        </LinearLayout>

    </RelativeLayout>
</ScrollView>
case R.id.btnSingIncancel:
                login.setVisibility(View.INVISIBLE);  //this can be deleted
                login.setVisibility(View.GONE);       //this too, and redundant as well.
                selectsingn.setVisibility(View.VISIBLE);
                fromsignin.setVisibility(View.GONE);    //This line is the important one!
                return;