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