From ed513d7e4a624a9f82e15923a7052d4c18a020a7 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Thu, 17 Oct 2013 09:53:05 -0700 Subject: All printers list has incorrect padding and item height. 1. We were using the layout for the printer drop down from the print dialog as the list item in the all printers activity. This layout was not high enough. Now we have a separate layout for the drop down and for the list. Note that they are almost identical but this is better that writing java code to lookup the height from the theme and change it programatically since the java code is almost half the size of the layout and leads to spreading the logic in both the layout file and the java code. 2. The padding of the printers list was not correct. Now it mimics the bahavior in settings where we change the padding based on orientation. bug:11261157 Change-Id: I8507c4ee86e9196fe1777cf9577f1886ccfbb1ad --- .../PrintSpooler/res/layout/printer_list_item.xml | 71 ++++++++++++++++++++++ .../res/layout/select_printer_fragment.xml | 26 ++++++++ .../PrintSpooler/res/values-land/constants.xml | 22 +++++++ packages/PrintSpooler/res/values/constants.xml | 5 +- .../printspooler/SelectPrinterFragment.java | 61 +++++++++++-------- 5 files changed, 159 insertions(+), 26 deletions(-) create mode 100644 packages/PrintSpooler/res/layout/printer_list_item.xml create mode 100644 packages/PrintSpooler/res/layout/select_printer_fragment.xml create mode 100644 packages/PrintSpooler/res/values-land/constants.xml (limited to 'packages/PrintSpooler') diff --git a/packages/PrintSpooler/res/layout/printer_list_item.xml b/packages/PrintSpooler/res/layout/printer_list_item.xml new file mode 100644 index 0000000..47eb0b5 --- /dev/null +++ b/packages/PrintSpooler/res/layout/printer_list_item.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + diff --git a/packages/PrintSpooler/res/layout/select_printer_fragment.xml b/packages/PrintSpooler/res/layout/select_printer_fragment.xml new file mode 100644 index 0000000..bbd012e --- /dev/null +++ b/packages/PrintSpooler/res/layout/select_printer_fragment.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/packages/PrintSpooler/res/values-land/constants.xml b/packages/PrintSpooler/res/values-land/constants.xml new file mode 100644 index 0000000..d68b77e --- /dev/null +++ b/packages/PrintSpooler/res/values-land/constants.xml @@ -0,0 +1,22 @@ + + + + + + 48dip + 48dip + + diff --git a/packages/PrintSpooler/res/values/constants.xml b/packages/PrintSpooler/res/values/constants.xml index e5a9d5d..e9c925c 100644 --- a/packages/PrintSpooler/res/values/constants.xml +++ b/packages/PrintSpooler/res/values/constants.xml @@ -26,4 +26,7 @@ 400dip - \ No newline at end of file + 16dip + 16dip + + diff --git a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java index be94ba4..204c152 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java +++ b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java @@ -22,7 +22,6 @@ import android.app.Dialog; import android.app.DialogFragment; import android.app.Fragment; import android.app.FragmentTransaction; -import android.app.ListFragment; import android.app.LoaderManager; import android.content.ActivityNotFoundException; import android.content.ComponentName; @@ -47,12 +46,14 @@ import android.printservice.PrintServiceInfo; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Filter; @@ -68,7 +69,7 @@ import java.util.List; /** * This is a fragment for selecting a printer. */ -public final class SelectPrinterFragment extends ListFragment { +public final class SelectPrinterFragment extends Fragment { private static final String LOG_TAG = "SelectPrinterFragment"; @@ -83,6 +84,8 @@ public final class SelectPrinterFragment extends ListFragment { private final ArrayList mAddPrinterServices = new ArrayList(); + private ListView mListView; + private AnnounceFilterResult mAnnounceFilterResult; public static interface OnPrinterSelectedListener { @@ -97,8 +100,12 @@ public final class SelectPrinterFragment extends ListFragment { } @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View content = inflater.inflate(R.layout.select_printer_fragment, container, false); + + // Hook up the list view. + mListView = (ListView) content.findViewById(android.R.id.list); final DestinationAdapter adapter = new DestinationAdapter(); adapter.registerDataSetObserver(new DataSetObserver() { @Override @@ -115,7 +122,23 @@ public final class SelectPrinterFragment extends ListFragment { } } }); - setListAdapter(adapter); + mListView.setAdapter(adapter); + + mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + PrinterInfo printer = (PrinterInfo) mListView.getAdapter().getItem(position); + Activity activity = getActivity(); + if (activity instanceof OnPrinterSelectedListener) { + ((OnPrinterSelectedListener) activity).onPrinterSelected(printer.getId()); + } else { + throw new IllegalStateException("the host activity must implement" + + " OnPrinterSelectedListener"); + } + } + }); + + return content; } @Override @@ -133,7 +156,7 @@ public final class SelectPrinterFragment extends ListFragment { @Override public boolean onQueryTextChange(String searchString) { - ((DestinationAdapter) getListAdapter()).getFilter().filter(searchString); + ((DestinationAdapter) mListView.getAdapter()).getFilter().filter(searchString); return true; } }); @@ -177,18 +200,6 @@ public final class SelectPrinterFragment extends ListFragment { } @Override - public void onListItemClick(ListView list, View view, int position, long id) { - PrinterInfo printer = (PrinterInfo) list.getAdapter().getItem(position); - Activity activity = getActivity(); - if (activity instanceof OnPrinterSelectedListener) { - ((OnPrinterSelectedListener) activity).onPrinterSelected(printer.getId()); - } else { - throw new IllegalStateException("the host activity must implement" - + " OnPrinterSelectedListener"); - } - } - - @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_add_printer) { showAddPrinterSelectionDialog(); @@ -260,9 +271,9 @@ public final class SelectPrinterFragment extends ListFragment { } public void updateEmptyView(DestinationAdapter adapter) { - if (getListView().getEmptyView() == null) { + if (mListView.getEmptyView() == null) { View emptyView = getActivity().findViewById(R.id.empty_print_state); - getListView().setEmptyView(emptyView); + mListView.setEmptyView(emptyView); } TextView titleView = (TextView) getActivity().findViewById(R.id.title); View progressBar = getActivity().findViewById(R.id.progress_bar); @@ -450,7 +461,7 @@ public final class SelectPrinterFragment extends ListFragment { public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = getActivity().getLayoutInflater().inflate( - R.layout.printer_dropdown_item, parent, false); + R.layout.printer_list_item, parent, false); } convertView.setEnabled(isEnabled(position)); @@ -539,16 +550,16 @@ public final class SelectPrinterFragment extends ListFragment { public void post() { remove(); - getListView().postDelayed(this, SEARCH_RESULT_ANNOUNCEMENT_DELAY); + mListView.postDelayed(this, SEARCH_RESULT_ANNOUNCEMENT_DELAY); } public void remove() { - getListView().removeCallbacks(this); + mListView.removeCallbacks(this); } @Override public void run() { - final int count = getListView().getAdapter().getCount(); + final int count = mListView.getAdapter().getCount(); final String text; if (count <= 0) { text = getString(R.string.print_no_printers); @@ -556,7 +567,7 @@ public final class SelectPrinterFragment extends ListFragment { text = getActivity().getResources().getQuantityString( R.plurals.print_search_result_count_utterance, count, count); } - getListView().announceForAccessibility(text); + mListView.announceForAccessibility(text); } } } -- cgit v1.1