From 50ea6b06d5052e68a328ebbc42948551dd02da31 Mon Sep 17 00:00:00 2001 From: shaoweishen Date: Wed, 22 Jan 2025 09:57:26 +0000 Subject: [PATCH] [Physical Keybaord] Fix Mouse key image truncate Seperate Images in Mouse Key page to apply scaling. Bug: 389665773 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: I207c13fb99fa5c01c08c7ca92eae2d1d5781a830 --- res/layout/mouse_keys_image_item.xml | 31 +++++++++++++------ .../MouseKeysImageListAdapter.java | 8 +++-- .../MouseKeysMainPageFragment.java | 8 ++++- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/res/layout/mouse_keys_image_item.xml b/res/layout/mouse_keys_image_item.xml index 36b999201f3..52ee31a9e15 100644 --- a/res/layout/mouse_keys_image_item.xml +++ b/res/layout/mouse_keys_image_item.xml @@ -15,12 +15,25 @@ limitations under the License. --> - + + + + + + \ No newline at end of file diff --git a/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java b/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java index 9aab3a4fa64..d3a97b6423c 100644 --- a/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java +++ b/src/com/android/settings/inputmethod/MouseKeysImageListAdapter.java @@ -22,6 +22,7 @@ import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; @@ -124,18 +125,19 @@ public class MouseKeysImageListAdapter extends public static class MouseKeyImageViewHolder extends RecyclerView.ViewHolder { private final TextView mTextView; + private final ImageView mImageView; private final Context mContext; public MouseKeyImageViewHolder(View itemView, Context context) { super(itemView); - mTextView = (TextView) itemView; + mTextView = itemView.findViewById(R.id.layout_description); + mImageView = itemView.findViewById(R.id.image); mContext = context; } void bindView(int drawableRes, String summary) { mTextView.setText(summary); - mTextView.setCompoundDrawablesWithIntrinsicBounds(null, - mContext.getDrawable(drawableRes), null, null); + mImageView.setImageDrawable(mContext.getDrawable(drawableRes)); } } } diff --git a/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java b/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java index 1f6035f03ec..12604bd4b27 100644 --- a/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java +++ b/src/com/android/settings/inputmethod/MouseKeysMainPageFragment.java @@ -20,6 +20,7 @@ import static com.android.settings.inputmethod.PhysicalKeyboardFragment.getHardK import android.app.settings.SettingsEnums; import android.content.Context; +import android.content.res.Configuration; import android.hardware.input.InputManager; import android.os.Bundle; import android.view.InputDevice; @@ -32,6 +33,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.internal.util.Preconditions; import com.android.settings.R; +import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.keyboard.Flags; import com.android.settings.search.BaseSearchIndexProvider; @@ -125,7 +127,11 @@ public class MouseKeysMainPageFragment extends DashboardFragment private void configureImagesPreference() { final RecyclerView recyclerView = mMouseKeyImagesPreference.findViewById( R.id.mouse_keys_image_recycler_list); - recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2)); + boolean isPortrait = getResources().getConfiguration().orientation + == Configuration.ORIENTATION_PORTRAIT; + boolean isTwoPaneState = ActivityEmbeddingUtils.isAlreadyEmbedded(this.getActivity()); + int column = isPortrait && !isTwoPaneState ? 1 : 2; + recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), column)); recyclerView.setAdapter(new MouseKeysImageListAdapter(getActivity(), mCurrentInputDevice)); }