Focus PIN entry

So easy ... not
This commit is contained in:
M66B 2019-11-01 10:50:32 +01:00
parent dffecce642
commit d5c5fcf670
4 changed files with 58 additions and 18 deletions

View File

@ -25,17 +25,21 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
@ -197,14 +201,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
final View dview = LayoutInflater.from(getContext()).inflate(R.layout.dialog_pin_set, null);
final EditText etPin = dview.findViewById(R.id.etPin);
new Handler().post(new Runnable() {
@Override
public void run() {
etPin.requestFocus();
}
});
return new AlertDialog.Builder(getContext())
final Dialog dialog = new AlertDialog.Builder(getContext())
.setView(dview)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
@ -219,6 +216,41 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer
})
.setNegativeButton(android.R.string.cancel, null)
.create();
etPin.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE).performClick();
return true;
} else
return false;
}
});
etPin.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
});
new Handler().post(new Runnable() {
@Override
public void run() {
etPin.requestFocus();
}
});
new Handler().post(new Runnable() {
@Override
public void run() {
etPin.requestFocus();
}
});
return dialog;
}
}
}

View File

@ -53,6 +53,7 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.webkit.WebView;
import android.widget.Button;
@ -824,14 +825,7 @@ public class Helper {
final View dview = LayoutInflater.from(activity).inflate(R.layout.dialog_pin_ask, null);
final EditText etPin = dview.findViewById(R.id.etPin);
new Handler().post(new Runnable() {
@Override
public void run() {
etPin.requestFocus();
}
});
AlertDialog dialog = new AlertDialog.Builder(activity)
final AlertDialog dialog = new AlertDialog.Builder(activity)
.setView(dview)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
@ -872,6 +866,21 @@ public class Helper {
}
});
etPin.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
});
new Handler().post(new Runnable() {
@Override
public void run() {
etPin.requestFocus();
}
});
dialog.show();
}
}

View File

@ -20,8 +20,6 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:hint="@string/title_advanced_pin"
android:imeOptions="actionDone"
android:inputType="numberPassword"

View File

@ -20,6 +20,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:imeOptions="actionDone"
android:inputType="number"
android:maxLines="1"
app:layout_constraintEnd_toEndOf="parent"