私は上部に画像があるレイアウト、ユーザー名とパスワードのための2つのEditText、最後にログインボタンを持っています。レイアウトの入力を開始するために編集テキストをタップすると(ユーザーが表示できるようにするために)レイアウトはシフトの各繰り返しを保持します。下の図を参照してください。また、編集テキストに何かを入力すると、ヒントは消えず、バックスペースにもかかわらず文字が消えません。どのように私はこれを中止するのですか?Androidレイアウトは静的です。ビューに加えられた変更はすべて保持されます
![キーボードのシフトがアップ表示とレイアウトが繰り返される] https://i.stack.imgur.com/kiPGU.jpg ![テキストはエディットテキストで入力すると、カーソルが残っていると、テキストを繰り返し] https://i.stack.imgur.com/O9pGq.jpg
アクティビティコード
package com.example.ybfe1853.blackwoodscheduling;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class LogInActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_container);
if(findViewById(R.id.activity_log_in_id) != null){
if(savedInstanceState != null){
return;
}
}
LogInActivityFragment logInFragment = new LogInActivityFragment();
getFragmentManager().beginTransaction().add(R.id.fragment_container,logInFragment).commit();
}
}
フラグメントのコード package com.example.ybfe1853.blackwoodscheduling;
/**
* Created by ybfe1853 on 10/6/16.
*/
import android.app.Fragment;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteQueryBuilder;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
public class LogInActivityFragment extends Fragment {
EditText eMail;
EditText password;
String email_value;
String password_value;
Button loginButton;
final String EMAIL_COLUMN = "EMAIL";
final String PASSWORD = "PASSWORD";
//apps using fragments on devices earlier than honey comb must extend FragmentActivity rather than just fragment//
//savedInstanceState is a Bundle that passes data about the previous instance of the fragment, just in case this fragment is being resumed;
@Override
//To inflate your fragment's layout inside the current activity, you need to override the onCreateView() method//
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_log_in, container, false);
eMail = (EditText) view.findViewById(R.id.email_id);
password = (EditText) view.findViewById(R.id.password_id);
loginButton = (Button) view.findViewById(R.id.login_button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
email_value = eMail.getText().toString();
password_value = password.getText().toString();
LogInTask login = new LogInTask();
if (login.doInBackground(email_value, password_value)) {
Intent newIntent = new Intent(getActivity(), CustomerAppointmentsActivity.class);
startActivity(newIntent);
}
}
});
return view;
}
private class LogInTask extends AsyncTask<String, Integer, Boolean> {
protected Boolean doInBackground(String... credentials) {
boolean authenticated = false;
int password = 1;
int email = 0;
String[] credentialParams = new String[]{EMAIL_COLUMN, PASSWORD};
credentialParams[email] = EMAIL_COLUMN;
credentialParams[password] = PASSWORD;
credentials[email] = email_value.replace(" ", "");
credentials[password] = password_value;
DBHandler db = new DBHandler(getActivity());
Cursor cursor;
cursor = db.getReadableDatabase().rawQuery("SELECT EMAIL, PASSWORD FROM BLACKWOOD_USER " +
"WHERE EMAIL = ? AND PASSWORD = ?", new String[]{credentials[email], credentials[password]});
int rowsReturned = cursor.getCount();
cursor.moveToFirst();
if(password_value.equals(cursor.getString(cursor.getColumnIndex("PASSWORD")))){
authenticated = true;
return authenticated;
}
else{
return authenticated;
}
}
}
}
断片XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id = "@+id/activity_log_in_id"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
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=".LogInActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/login_page_title"
android:textSize="24dp"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id = "@+id/barberImageContainerId"
android:src = "@drawable/barberimage"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint = "@string/user_name_hint"
android:layout_marginTop="75dp"
android:id = "@+id/email_id"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint = "@string/password_hint"
android:layout_marginTop="75dp"
android:id = "@+id/password_id"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login_button_name"
android:layout_gravity="center"
android:layout_marginTop="100dp"
android:id = "@+id/login_button"/>
</LinearLayout>
フラグメントコンテナXML
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/fragment_container"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android" />
レイアウトが繰り返されても機能しませんでした。 – user2904913