[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:
@@ -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();
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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());
|
||||
|
Reference in New Issue
Block a user