From 5f0c62f6bc7a31ef6d726a0f0acfb6431296e94f Mon Sep 17 00:00:00 2001 From: Howard Chen Date: Thu, 6 Oct 2022 18:15:43 +0800 Subject: [PATCH] Resize the DSULoader dialog dynamically Bug: 246686308 Test: Open the DSULoader and check the space Change-Id: I1f71e6874a322be5456ae4dd9fe9bcca792bd593 --- .../settings/development/DSULoader.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/development/DSULoader.java b/src/com/android/settings/development/DSULoader.java index d4fa0c64646..fede67a7766 100644 --- a/src/com/android/settings/development/DSULoader.java +++ b/src/com/android/settings/development/DSULoader.java @@ -26,6 +26,7 @@ import android.text.TextUtils; import android.util.Slog; import android.view.LayoutInflater; import android.view.View; +import android.view.View.MeasureSpec; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; @@ -117,6 +118,20 @@ public class DSULoader extends ListActivity { } } } + + private void resizeListView() { + ListView view = getListView(); + View item_view = mAdapter.getView(0, null, view); + item_view.measure( + MeasureSpec.makeMeasureSpec(view.getWidth(), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + ViewGroup.LayoutParams params = view.getLayoutParams(); + params.height = item_view.getMeasuredHeight() * (mAdapter.getCount() + 1); + Slog.e(TAG, "resizeListView height=" + params.height); + view.setLayoutParams(params); + view.requestLayout(); + } + // Fetcher fetches mDSUList in backgroud private class Fetcher implements Runnable { private URL mDsuList; @@ -172,6 +187,9 @@ public class DSULoader extends ListActivity { public void run() { try { fetch(mDsuList); + if (mDSUList.size() == 0) { + mDSUList.add(0, "No DSU available for this device"); + } } catch (IOException e) { Slog.e(TAG, e.toString()); mDSUList.add(0, "Network Error"); @@ -179,14 +197,12 @@ public class DSULoader extends ListActivity { Slog.e(TAG, e.toString()); mDSUList.add(0, "Metadata Error"); } - if (mDSUList.size() == 0) { - mDSUList.add(0, "No DSU available for this device"); - } runOnUiThread( new Runnable() { public void run() { mAdapter.clear(); mAdapter.addAll(mDSUList); + resizeListView(); } }); }