[Physical Keyboard] Update Input Setting Dialog

1. update button style to use custom one
2. use scrollview so it won't be truncated in shorter screen

Bug:389973784
Flag: com.android.settings.keyboard.keyboard_and_touchpad_a11y_new_page_enabled
Test: atest
packages/apps/Settings/tests/robotests/src/com/android/settings/inputmethod/

Change-Id: I57765e88751b6090606d56bbe2335813ef7fd2fc
This commit is contained in:
shaoweishen
2025-02-06 10:01:59 +00:00
parent 010869fc7e
commit 4da457f8a9
4 changed files with 199 additions and 137 deletions

View File

@@ -15,11 +15,18 @@
limitations under the License. limitations under the License.
--> -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView
android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent" xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:id="@+id/input_keys_dialog_scroll_view"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical"> android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/modifier_key_fragment_container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView <TextView
android:id="@+id/input_setting_keys_dialog_title" android:id="@+id/input_setting_keys_dialog_title"
@@ -121,16 +128,48 @@
android:paddingEnd="36dp" android:paddingEnd="36dp"
android:min="1" android:min="1"
android:max="50" android:max="50"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:progressBackgroundTint="@color/input_dialog_slider_progress_background" android:progressBackgroundTint="@color/input_dialog_slider_progress_background"
android:progressTint="@color/input_dialog_slider_progress" android:progressTint="@color/input_dialog_slider_progress"
android:thumbTint="@color/input_dialog_slider_progress" android:thumbTint="@color/input_dialog_slider_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:visibility="gone"/> android:visibility="gone"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</RadioGroup> </RadioGroup>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="6dp">
<Button
android:id="@+id/cancel_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:paddingVertical="14dp"
android:layout_toStartOf="@+id/done_button"
style="@style/SettingsLibActionButton"
android:text="@string/cancel"/>
<Button
android:id="@+id/done_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:layout_marginEnd="8dp"
android:layout_alignParentEnd="true"
android:paddingVertical="14dp"
style="@style/SettingsLibActionButton"
android:text="@string/done"/>
</RelativeLayout>
</LinearLayout> </LinearLayout>
</ScrollView>

View File

@@ -25,6 +25,7 @@ import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.widget.Button;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.SeekBar; import android.widget.SeekBar;
@@ -78,8 +79,8 @@ public abstract class KeyboardAccessibilityKeysDialogFragment extends DialogFrag
R.layout.dialog_keyboard_a11y_input_setting_keys, null); R.layout.dialog_keyboard_a11y_input_setting_keys, null);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity); AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
dialogBuilder.setView(dialoglayout); dialogBuilder.setView(dialoglayout);
dialogBuilder.setPositiveButton(android.R.string.ok, Button doneButton = dialoglayout.findViewById(R.id.done_button);
(dialog, which) -> { doneButton.setOnClickListener(v -> {
RadioGroup radioGroup = RadioGroup radioGroup =
dialoglayout.findViewById( dialoglayout.findViewById(
R.id.input_setting_keys_value_group); R.id.input_setting_keys_value_group);
@@ -106,8 +107,13 @@ public abstract class KeyboardAccessibilityKeysDialogFragment extends DialogFrag
} }
updateInputSettingKeysValue(threshold); updateInputSettingKeysValue(threshold);
onCustomValueUpdated(threshold); onCustomValueUpdated(threshold);
}) dismiss();
.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss()); });
Button cancelButton = dialoglayout.findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(v -> {
dismiss();
});
AlertDialog accessibilityKeyDialog = dialogBuilder.create(); AlertDialog accessibilityKeyDialog = dialogBuilder.create();
accessibilityKeyDialog.setOnShowListener(dialog -> { accessibilityKeyDialog.setOnShowListener(dialog -> {
RadioGroup cannedValueRadioGroup = accessibilityKeyDialog.findViewById( RadioGroup cannedValueRadioGroup = accessibilityKeyDialog.findViewById(
@@ -162,8 +168,21 @@ public abstract class KeyboardAccessibilityKeysDialogFragment extends DialogFrag
public void onStopTrackingTouch(SeekBar seekBar) { public void onStopTrackingTouch(SeekBar seekBar) {
} }
}); });
initStateBasedOnThreshold(cannedValueRadioGroup, customRadioButton, customValueTextView, if (cannedValueRadioGroup.getCheckedRadioButtonId() == -1
&& !customRadioButton.isChecked()) {
//if canned radio group and custom are not select, initial check state from input
// setting
initStateBasedOnThreshold(cannedValueRadioGroup, customRadioButton,
customValueTextView,
customProgressBar); customProgressBar);
} else if (customRadioButton.isChecked()) {
cannedValueRadioGroup.clearCheck();
customRadioButton.setChecked(true);
customValueTextView.setVisibility(View.VISIBLE);
customValueTextView.setText(
progressToThresholdInSecond(customProgressBar.getProgress()));
customProgressBar.setVisibility(View.VISIBLE);
}
}); });
final Window window = accessibilityKeyDialog.getWindow(); final Window window = accessibilityKeyDialog.getWindow();

View File

@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.hardware.input.InputSettings; import android.hardware.input.InputSettings;
import android.os.Bundle; import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import androidx.fragment.app.testing.FragmentScenario; import androidx.fragment.app.testing.FragmentScenario;
@@ -70,7 +71,8 @@ public class KeyboardAccessibilityBounceKeysDialogFragmentTest {
RadioGroup radioGroup = mAlertDialog.findViewById(R.id.input_setting_keys_value_group); RadioGroup radioGroup = mAlertDialog.findViewById(R.id.input_setting_keys_value_group);
radioGroup.check(R.id.input_setting_keys_value_200); radioGroup.check(R.id.input_setting_keys_value_200);
mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); Button doneButton = mAlertDialog.findViewById(R.id.done_button);
doneButton.performClick();
ShadowLooper.idleMainLooper(); ShadowLooper.idleMainLooper();
assertThat(mAlertDialog.isShowing()).isFalse(); assertThat(mAlertDialog.isShowing()).isFalse();

View File

@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.hardware.input.InputSettings; import android.hardware.input.InputSettings;
import android.os.Bundle; import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import androidx.fragment.app.testing.FragmentScenario; import androidx.fragment.app.testing.FragmentScenario;
@@ -70,7 +71,8 @@ public class KeyboardAccessibilitySlowKeysDialogFragmentTest {
RadioGroup radioGroup = mAlertDialog.findViewById(R.id.input_setting_keys_value_group); RadioGroup radioGroup = mAlertDialog.findViewById(R.id.input_setting_keys_value_group);
radioGroup.check(R.id.input_setting_keys_value_200); radioGroup.check(R.id.input_setting_keys_value_200);
mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick(); Button doneButton = mAlertDialog.findViewById(R.id.done_button);
doneButton.performClick();
ShadowLooper.idleMainLooper(); ShadowLooper.idleMainLooper();
assertThat(mAlertDialog.isShowing()).isFalse(); assertThat(mAlertDialog.isShowing()).isFalse();