Skip to content

Commit

Permalink
Caret position in edit text (#20)
Browse files Browse the repository at this point in the history
  • Loading branch information
myadzel authored Nov 26, 2024
1 parent c000ba5 commit a22bfa0
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 5 deletions.
27 changes: 23 additions & 4 deletions app/src/main/java/org/sportiduino/app/FragmentStationSettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
import java.util.Timer;
import java.util.TimerTask;

import static org.sportiduino.app.ViewUtils.initCaretEndOnFocus;
import static org.sportiduino.app.ViewUtils.setCaretEnd;

public class FragmentStationSettings extends NfcFragment {
private FragmentStationSettingsBinding binding;
private Password password = Password.defaultPassword();
Expand Down Expand Up @@ -92,6 +95,7 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
}
}

initCaretEndOnFocus(binding.editTextStationNumber);
binding.editTextStationNumber.setFilters(new InputFilter[]{new MinMaxFilter(1, 255)});

binding.buttonStart.setOnClickListener(buttonClickListener);
Expand All @@ -117,10 +121,18 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
android.R.layout.simple_spinner_item, Config.AntennaGain.realValues()));
binding.spinnerAntennaGain.setSelection(2);

initCaretEndOnFocus(binding.newPassword1);
initCaretEndOnFocus(binding.newPassword2);
initCaretEndOnFocus(binding.newPassword3);

binding.newPassword1.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
binding.newPassword2.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
binding.newPassword3.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});

initCaretEndOnFocus(binding.mpNewPassword1);
initCaretEndOnFocus(binding.mpNewPassword2);
initCaretEndOnFocus(binding.mpNewPassword2);

binding.mpNewPassword1.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
binding.mpNewPassword2.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
binding.mpNewPassword3.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
Expand Down Expand Up @@ -236,14 +248,21 @@ private void rbChecked(RadioButton rb) {
View.OnClickListener buttonClickListener = (View view) -> {
Button b = (Button) view;
int id = b.getId();
int stationNumber = -1;

if (id == R.id.button_start) {
binding.editTextStationNumber.setText(String.valueOf(Config.START_STATION));
stationNumber = Config.START_STATION;
} else if (id == R.id.button_finish) {
binding.editTextStationNumber.setText(String.valueOf(Config.FINISH_STATION));
stationNumber = Config.FINISH_STATION;
} else if (id == R.id.button_check) {
binding.editTextStationNumber.setText(String.valueOf(Config.CHECK_STATION));
stationNumber = Config.CHECK_STATION;
} else if (id == R.id.button_clear) {
binding.editTextStationNumber.setText(String.valueOf(Config.CLEAR_STATION));
stationNumber = Config.CLEAR_STATION;
}

if (stationNumber != -1) {
binding.editTextStationNumber.setText(String.valueOf(stationNumber));
setCaretEnd(binding.editTextStationNumber);
}
};

Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/org/sportiduino/app/FragmentWriteCard.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import org.sportiduino.app.sportiduino.ReadWriteCardException;
import org.sportiduino.app.sportiduino.Util;

import static org.sportiduino.app.ViewUtils.initCaretEndOnFocus;

public class FragmentWriteCard extends NfcFragment {
private FragmentWriteCardBinding binding;
private int cardNumber;
Expand All @@ -42,6 +44,7 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {

binding.textViewNfcInfo.setText(R.string.bring_card);

initCaretEndOnFocus(binding.editTextCardNumber);
binding.editTextCardNumber.setFilters(new InputFilter[]{new MinMaxFilter(1, 65535)});

binding.checkBoxCleaningOnly.setOnCheckedChangeListener((CompoundButton buttonView, boolean isChecked) -> {
Expand All @@ -53,6 +56,8 @@ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
binding.checkBoxAutoIncrement.setEnabled(true);
}
});

binding.editTextCardNumber.requestFocus();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import androidx.preference.PreferenceDialogFragmentCompat;

import static org.sportiduino.app.Password.parseValue;
import static org.sportiduino.app.ViewUtils.initCaretEndOnFocus;

public class PasswordPreferenceDialog extends PreferenceDialogFragmentCompat {

Expand Down Expand Up @@ -50,13 +51,19 @@ protected void onBindDialogView(View view) {
editTextPass1 = view.findViewById(R.id.password1);
editTextPass2 = view.findViewById(R.id.password2);
editTextPass3 = view.findViewById(R.id.password3);
editTextPass1.requestFocus();

initCaretEndOnFocus(editTextPass1);
initCaretEndOnFocus(editTextPass2);
initCaretEndOnFocus(editTextPass3);

editTextPass1.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
editTextPass2.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
editTextPass3.setFilters(new InputFilter[]{new MinMaxFilter(0, 255)});
editTextPass1.setText(String.valueOf(password.getValue(0)));
editTextPass2.setText(String.valueOf(password.getValue(1)));
editTextPass3.setText(String.valueOf(password.getValue(2)));

editTextPass1.requestFocus();
}

private PasswordPreference getPasswordPreference() {
Expand Down
18 changes: 18 additions & 0 deletions app/src/main/java/org/sportiduino/app/ViewUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.sportiduino.app;

import android.widget.EditText;

public class ViewUtils {
public static void setCaretEnd(EditText input) {
input.setSelection(input.getText().length());
}

public static void initCaretEndOnFocus(EditText input) {
input.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) {
setCaretEnd(input);
}
});
}
}

0 comments on commit a22bfa0

Please sign in to comment.