EditText被键盘与自定义动画重叠

时间:2017-09-25 11:54:31

标签: java android xml

当我尝试输入时,我的键盘覆盖了我的EditText

这是没有键盘的屏幕截图 Without Keyboard

这是使用键盘的屏幕截图 With Keyboard

说到代码,我尝试了我能在这里找到的所有内容,我认为它来自于我使用自定义动画的事实。这是代码的XML部分:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"
    android:paddingTop="25dp">

        <!--French Flag !-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="65dp"
            android:orientation="vertical"
            android:id="@+id/linearLayout">

            <View
                android:layout_width="match_parent"
                android:layout_height="12dp"
                android:background="@color/flagBlue">

            </View>

            <View
                android:layout_width="match_parent"
                android:layout_height="12dp"
                android:background="@color/flagWhite">

            </View>

            <View
                android:layout_width="match_parent"
                android:layout_height="12dp"
                android:background="@color/flagRed">

            </View>

        </LinearLayout>

        <ImageView
            android:layout_width="250dp"
            android:layout_height="250dp"
            android:id="@+id/logo"
            android:src="@drawable/logo_text"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true" />

        <com.facebook.login.widget.LoginButton
            android:id="@+id/button_facebook_sign_in"
            android:layout_width="200dp"
            android:layout_height="45dp"
            android:layout_marginTop="100dp"
            android:layout_below="@+id/logo"
            android:layout_centerHorizontal="true" />

        <com.petitchef.petitchef.views.customviews.CustomButton
            android:id="@+id/button_sign_in"
            android:layout_marginTop="20dp"
            android:layout_width="180dp"
            android:layout_height="35dp"
            android:text="@string/sign_in_petitchef"
            android:textColor="@color/flagWhite"
            android:background="@drawable/petitchef_background_button"
            android:layout_below="@+id/button_facebook_sign_in"
            android:textSize="15sp"
            android:layout_centerHorizontal="true" />


        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="75dp"
                android:src="@drawable/fork_and_knife"
                android:layout_centerHorizontal="true" />

            <include layout="@layout/signup_form"
                android:id="@+id/sign_up_form"
                android:layout_marginTop="50dp"
                android:layout_width="match_parent"
                android:layout_height="800dp"/>

            <include layout="@layout/signin_form"
                android:id="@+id/sign_in_form"
                android:layout_marginTop="50dp"
                android:layout_width="match_parent"
                android:layout_height="800dp"/>
        </RelativeLayout>

</RelativeLayout>

Java部分

public class SignUpActivity extends AppCompatActivity {

private static final String TAG = "SignUpActivity";
View sliderView;
TextView switchToSignIn;
TextView switchToSignUp;
CallbackManager callbackManager;

EditText usernameSignIn;
EditText passwordSignIn;
EditText usernameSignUp;
EditText mailSignUp;
EditText passwordSignUp;

Button buttonSignIn;
Button buttonFacebook;
Button buttonConfirmSignIn;
Button buttonConfirmSignUp;
LoginButton loginButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_login_signup);

    //Testing if user already logged in
    callbackManager = CallbackManager.Factory.create();
    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    if (sharedPref.contains(this.getString(R.string.token_shared_string))) {
        Intent intent = new Intent(SignUpActivity.this, MainActivity.class);
        startActivity(intent);
        finish();
    }


    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    sliderView = findViewById(R.id.slider_layout);
    loginButton = (LoginButton) findViewById(R.id.button_facebook_sign_in);
    loginButton.setReadPermissions("email");

    buttonSignIn = (Button) findViewById(R.id.button_sign_in);
    buttonSignIn.setTransformationMethod(null);
    buttonConfirmSignIn = (Button) findViewById(R.id.button_confirm_sign_in);
    buttonConfirmSignIn.setTransformationMethod(null);
    buttonConfirmSignUp = (Button) findViewById(R.id.button_confirm_sign_up);
    buttonConfirmSignUp.setTransformationMethod(null);

    switchToSignIn = (TextView) findViewById(R.id.switch_to_login_text);
    switchToSignIn.setText(Html.fromHtml(getString(R.string.signup_switch_to_signin)));
    switchToSignUp = (TextView) findViewById(R.id.switch_to_signup_text);
    switchToSignUp.setText(Html.fromHtml(getString(R.string.signin_switch_to_signup)));

    switchToSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            findViewById(R.id.sign_up_form).setVisibility(View.INVISIBLE);
            findViewById(R.id.sign_in_form).setVisibility(View.VISIBLE);
        }
    });

    switchToSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            findViewById(R.id.sign_up_form).setVisibility(View.VISIBLE);
            findViewById(R.id.sign_in_form).setVisibility(View.INVISIBLE);
        }
    });

    usernameSignIn = (EditText) findViewById(R.id.username_sign_in);
    passwordSignIn = (EditText) findViewById(R.id.password_sign_in);
    usernameSignUp = (EditText) findViewById(R.id.username_sign_up);
    mailSignUp = (EditText) findViewById(R.id.mail_address_sign_up);
    passwordSignUp = (EditText) findViewById(R.id.password_sign_up);


    buttonSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Resources resources = SignUpActivity.this.getResources();
            DisplayMetrics displayMetrics = resources.getDisplayMetrics();
            sliderView.animate()
                    .translationY(-0.8f * displayMetrics.heightPixels / 2)
                    .setDuration(600)
                    .setListener(new Animator.AnimatorListener() {
                        @Override
                        public void onAnimationStart(Animator animation) {
                            findViewById(R.id.sign_up_form).setVisibility(View.INVISIBLE);
                            findViewById(R.id.sign_in_form).setVisibility(View.VISIBLE);
                            buttonSignIn.animate().alpha(0.0f)
                                    .setDuration(300);
                            buttonSignIn.setEnabled(false);
                            loginButton.animate().alpha(0.0f)
                                    .setDuration(300);
                            loginButton.setEnabled(false);
                        }

                        @Override
                        public void onAnimationEnd(Animator animation) {
                        }

                        @Override
                        public void onAnimationCancel(Animator animation) {

                        }

                        @Override
                        public void onAnimationRepeat(Animator animation) {

                        }
                    });
        }
    });

    buttonConfirmSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (TextUtils.isEmpty(usernameSignIn.getText()) || TextUtils.isEmpty(passwordSignIn.getText()))
                Toast.makeText(SignUpActivity.this, getResources().getString(R.string.error_field_empty), Toast.LENGTH_SHORT).show();
            String username = usernameSignIn.getText().toString();
            String password = passwordSignIn.getText().toString();
            APIManager.getInstance().login(username, password, new APIListener<Boolean>() {
                @Override
                public void onResult(Boolean hasSignUpSucceeded) {
                    if (hasSignUpSucceeded) {
                        Intent intent = new Intent(SignUpActivity.this, MainActivity.class);
                        startActivity(intent);
                        finish();
                    }
                    else {
                        Toast.makeText(SignUpActivity.this,
                                getResources().getString(R.string.error_password_or_username),
                                Toast.LENGTH_LONG)
                                .show();
                    }
                }
            });
        }
    });

    buttonConfirmSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (TextUtils.isEmpty(usernameSignUp.getText()) || TextUtils.isEmpty(passwordSignUp.getText()) || TextUtils.isEmpty(mailSignUp.getText()))
                Toast.makeText(SignUpActivity.this, getResources().getString(R.string.error_field_empty), Toast.LENGTH_SHORT).show();
            String username = usernameSignUp.getText().toString();
            String password = passwordSignUp.getText().toString();
            String mail = mailSignUp.getText().toString();
            APIManager.getInstance().register(username, password, mail, new APIListener<Boolean>() {
                @Override
                public void onResult(Boolean hasSignUpSucceeded) {
                    if (hasSignUpSucceeded) {
                        Intent intent = new Intent(SignUpActivity.this, MainActivity.class);
                        startActivity(intent);
                        finish();
                    }
                    else {
                        Toast.makeText(SignUpActivity.this,
                                getResources().getString(R.string.error_password_or_username),
                                Toast.LENGTH_LONG)
                                .show();
                    }
                }
            });
        }
    });

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
}

@Override
public void onBackPressed() {
    usernameSignIn.setText("");
    usernameSignIn.clearFocus();
    passwordSignIn.setText("");
    passwordSignIn.clearFocus();
    usernameSignUp.setText("");
    usernameSignUp.clearFocus();
    mailSignUp.setText("");
    mailSignUp.clearFocus();
    passwordSignUp.setText("");
    passwordSignUp.clearFocus();
    sliderView.animate()
            .translationY(0)
            .setDuration(600)
            .setListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {
                    buttonSignIn.animate().alpha(1.0f)
                            .setDuration(300);
                    buttonSignIn.setEnabled(true);
                    loginButton.animate().alpha(1.0f)
                            .setDuration(300);
                    loginButton.setEnabled(true);
                }

                @Override
                public void onAnimationEnd(Animator animation) {
                }

                @Override
                public void onAnimationCancel(Animator animation) {

                }

                @Override
                public void onAnimationRepeat(Animator animation) {

                }
            });
    }
}

我尝试了android:windowSoftInputMode="stateAlwaysHidden|adjustResize",我谨慎地将所有内容放入ScrollView(它只是打破了整个视图)

0 个答案:

没有答案