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
This commit is contained in:
@@ -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
|
||||
|
@@ -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 {
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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));
|
||||
|
Reference in New Issue
Block a user