Merge "Fix the “screen lock option” and password restriction view are in the wrong position on PIN/Password/Pattern in the landscape mode." into udc-qpr-dev am: 5a0d4d1cc3 am: 17d1e70930

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23712165

Change-Id: Ic73f5be63e2d9de3ede40fcfdb63357cab867634
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jason Chang
2023-07-10 04:19:00 +00:00
committed by Automerger Merge Worker
12 changed files with 112 additions and 39 deletions

View File

@@ -74,9 +74,11 @@ import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.CheckBox;
import android.widget.ImeAwareEditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -517,7 +519,9 @@ public class ChooseLockPassword extends SettingsActivity {
|| DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC == mPasswordType
|| DevicePolicyManager.PASSWORD_QUALITY_COMPLEX == mPasswordType;
setupPasswordRequirementsView(view);
final LinearLayout headerLayout = view.findViewById(
R.id.sud_layout_header);
setupPasswordRequirementsView(headerLayout);
mPasswordRestrictionView.setLayoutManager(new LinearLayoutManager(getActivity()));
mPasswordEntry = view.findViewById(R.id.password_entry);
@@ -626,11 +630,33 @@ public class ChooseLockPassword extends SettingsActivity {
}
}
private void setupPasswordRequirementsView(View view) {
mPasswordRestrictionView = view.findViewById(R.id.password_requirements_view);
private void setupPasswordRequirementsView(@Nullable ViewGroup view) {
if (view == null) {
return;
}
createHintMessageView(view);
mPasswordRestrictionView.setLayoutManager(new LinearLayoutManager(getActivity()));
mPasswordRequirementAdapter = new PasswordRequirementAdapter();
mPasswordRequirementAdapter = new PasswordRequirementAdapter(getActivity());
mPasswordRestrictionView.setAdapter(mPasswordRequirementAdapter);
view.addView(mPasswordRestrictionView);
}
private void createHintMessageView(ViewGroup view) {
if (mPasswordRestrictionView != null) {
return;
}
final TextView sucTitleView = view.findViewById(R.id.suc_layout_title);
final ViewGroup.MarginLayoutParams titleLayoutParams =
(ViewGroup.MarginLayoutParams) sucTitleView.getLayoutParams();
mPasswordRestrictionView = new RecyclerView(getActivity());
final LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(titleLayoutParams.leftMargin, getResources().getDimensionPixelSize(
R.dimen.password_requirement_view_margin_top), titleLayoutParams.leftMargin, 0);
mPasswordRestrictionView.setLayoutParams(lp);
}
@Override

View File

@@ -16,6 +16,7 @@
package com.android.settings.password;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -31,9 +32,12 @@ import com.android.settings.password.PasswordRequirementAdapter.PasswordRequirem
*/
public class PasswordRequirementAdapter extends
RecyclerView.Adapter<PasswordRequirementViewHolder> {
private String[] mRequirements;
public PasswordRequirementAdapter() {
private String[] mRequirements;
private Context mContext;
public PasswordRequirementAdapter(Context context) {
mContext = context;
setHasStableIds(true);
}
@@ -61,7 +65,12 @@ public class PasswordRequirementAdapter extends
@Override
public void onBindViewHolder(PasswordRequirementViewHolder holder, int position) {
final int fontSize = mContext.getResources().getDimensionPixelSize(
R.dimen.password_requirement_font_size);
holder.mDescriptionText.setText(mRequirements[position]);
holder.mDescriptionText.setTextAppearance(R.style.ScreenLockPasswordHintTextFontStyle);
holder.mDescriptionText.setTextSize(fontSize / mContext.getResources()
.getDisplayMetrics().scaledDensity);
}
public static class PasswordRequirementViewHolder extends RecyclerView.ViewHolder {

View File

@@ -27,7 +27,13 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.Utils;
public final class PasswordUtils extends com.android.settingslib.Utils {
@@ -97,4 +103,25 @@ public final class PasswordUtils extends com.android.settingslib.Utils {
Log.v(TAG, "Could not talk to activity manager.", e);
}
}
/** Setup screen lock options button under the Glif Header. */
public static void setupScreenLockOptionsButton(Context context, View view, Button optButton) {
final LinearLayout headerLayout = view.findViewById(
R.id.sud_layout_header);
final TextView sucTitleView = headerLayout.findViewById(R.id.suc_layout_title);
if (headerLayout != null && sucTitleView != null) {
final ViewGroup.MarginLayoutParams layoutTitleParams =
(ViewGroup.MarginLayoutParams) sucTitleView.getLayoutParams();
final ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lp.leftMargin = layoutTitleParams.leftMargin;
lp.topMargin = (int) context.getResources().getDimensionPixelSize(
R.dimen.screen_lock_options_button_margin_top);
optButton.setPadding(0, 0, 0, 0);
optButton.setLayoutParams(lp);
optButton.setText(context.getString(R.string.setup_lock_settings_options_button_label));
headerLayout.addView(optButton);
}
}
}

View File

@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.Button;
@@ -97,7 +98,10 @@ public class SetupChooseLockPassword extends ChooseLockPassword {
}
if (showOptionsButton && anyOptionsShown) {
mOptionsButton = view.findViewById(R.id.screen_lock_options);
mOptionsButton = new Button(new ContextThemeWrapper(getActivity(),
R.style.SudGlifButton_Tertiary));
mOptionsButton.setId(R.id.screen_lock_options);
PasswordUtils.setupScreenLockOptionsButton(getActivity(), view, mOptionsButton);
mOptionsButton.setVisibility(View.VISIBLE);
mOptionsButton.setOnClickListener((btn) ->
ChooseLockTypeDialogFragment.newInstance(mUserId)

View File

@@ -23,6 +23,7 @@ import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTE
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -83,7 +84,10 @@ public class SetupChooseLockPattern extends ChooseLockPattern {
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
if (!getResources().getBoolean(R.bool.config_lock_pattern_minimal_ui)) {
mOptionsButton = view.findViewById(R.id.screen_lock_options);
mOptionsButton = new Button(new ContextThemeWrapper(getActivity(),
R.style.SudGlifButton_Tertiary));
mOptionsButton.setId(R.id.screen_lock_options);
PasswordUtils.setupScreenLockOptionsButton(getActivity(), view, mOptionsButton);
mOptionsButton.setOnClickListener((btn) ->
ChooseLockTypeDialogFragment.newInstance(mUserId)
.show(getChildFragmentManager(), TAG_SKIP_SCREEN_LOCK_DIALOG));