[Settings] Limit height of TextView when text too long

Adjust the layout through having ConstraintLayout for limiting the
height of TextView.

Bug: 205460459
Test: local

Change-Id: Ic15af4c9be393a6855d78a5d9af086b099c9b689
This commit is contained in:
Bonian Chen
2023-01-09 08:10:11 +00:00
parent 8d13ea9e64
commit 61c45064cd
8 changed files with 95 additions and 74 deletions

View File

@@ -34,13 +34,11 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import android.util.Log;
import android.widget.TextView;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import com.android.internal.net.VpnConfig;
import com.android.internal.util.ArrayUtils;
@@ -81,6 +79,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
private String mVpnLabel;
// UI preference
private Preference mPreferenceVersion;
private RestrictedSwitchPreference mPreferenceAlwaysOn;
private RestrictedSwitchPreference mPreferenceLockdown;
private RestrictedPreference mPreferenceForget;
@@ -126,6 +125,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
mVpnManager = getContext().getSystemService(VpnManager.class);
mFeatureProvider = FeatureFactory.getFactory(getContext()).getAdvancedVpnFeatureProvider();
mPreferenceVersion = findPreference(KEY_VERSION);
mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN);
mPreferenceLockdown = (RestrictedSwitchPreference) findPreference(KEY_LOCKDOWN_VPN);
mPreferenceForget = (RestrictedPreference) findPreference(KEY_FORGET_VPN);
@@ -141,52 +141,8 @@ public class AppManagementFragment extends SettingsPreferenceFragment
boolean isInfoLoaded = loadInfo();
if (isInfoLoaded) {
mPreferenceVersion.setSummary(mPackageInfo.versionName);
updateUI();
Preference version = getPreferenceScreen().findPreference(KEY_VERSION);
if (version != null) {
// Version field has been added.
return;
}
/**
* Create version field at runtime, and set max height on the display area.
*
* When long length of text given within version field, a large text area
* might be created and inconvenient to the user (User need to scroll
* for a long time in order to get to the Preferences after this field.)
*/
version = new Preference(getPrefContext()) {
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
TextView titleView =
(TextView) holder.findViewById(android.R.id.title);
if (titleView != null) {
titleView.setTextAppearance(R.style.vpn_app_management_version_title);
}
TextView summaryView =
(TextView) holder.findViewById(android.R.id.summary);
if (summaryView != null) {
summaryView.setTextAppearance(R.style.vpn_app_management_version_summary);
// Set max height in summary area.
int versionMaxHeight = getListView().getHeight();
summaryView.setMaxHeight(versionMaxHeight);
summaryView.setVerticalScrollBarEnabled(false);
summaryView.setHorizontallyScrolling(false);
}
}
};
version.setOrder(0); // Set order to 0 in order to be placed
// in front of other Preference(s).
version.setKey(KEY_VERSION); // Set key to avoid from creating multi instance.
version.setTitle(R.string.vpn_version);
version.setSummary(mPackageInfo.versionName);
version.setSelectable(false);
getPreferenceScreen().addPreference(version);
} else {
finish();
}

View File

@@ -29,6 +29,7 @@ import com.android.internal.net.LegacyVpnInfo;
import com.android.internal.net.VpnConfig;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settings.R;
/**
* {@link androidx.preference.Preference} containing information about a VPN
@@ -42,7 +43,7 @@ public class AppPreference extends ManageablePreference {
private final String mName;
public AppPreference(Context context, int userId, String packageName) {
super(context, null /* attrs */);
super(context, null /* attrs */, R.style.VpnAppManagementPreferenceStyle, 0);
super.setUserId(userId);
mPackageName = packageName;

View File

@@ -44,7 +44,12 @@ public abstract class ManageablePreference extends GearPreference {
int mUserId;
public ManageablePreference(Context context, AttributeSet attrs) {
super(context, attrs);
this(context, attrs, 0, 0);
}
public ManageablePreference(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
setPersistent(false);
setOrder(0);
setUserId(UserHandle.myUserId());