Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/payments/ui/BillingAddressAdapter.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/BillingAddressAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/BillingAddressAdapter.java |
| index d7651749dc40752b32c56f982170029c087b53d5..bfe68653dbd6208169c9c173f419d02144f2abb9 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/BillingAddressAdapter.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/BillingAddressAdapter.java |
| @@ -7,6 +7,7 @@ package org.chromium.chrome.browser.payments.ui; |
| import android.content.Context; |
| import android.content.res.Resources; |
| import android.graphics.Typeface; |
| +import android.view.LayoutInflater; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.widget.ArrayAdapter; |
| @@ -38,6 +39,7 @@ import java.util.List; |
| * .............. |
| */ |
| public class BillingAddressAdapter<T> extends ArrayAdapter<T> { |
| + private final Context mContext; |
| /** |
| * Creates an array adapter for which the last element is a hint that is not shown in the |
| @@ -59,6 +61,7 @@ public class BillingAddressAdapter<T> extends ArrayAdapter<T> { |
| // The hint is added as the last element. It will not be shown when the dropdown is |
| // expanded and not be taken into account in the getCount function. |
| add(hint); |
| + mContext = context; |
| } |
| @Override |
| @@ -70,30 +73,46 @@ public class BillingAddressAdapter<T> extends ArrayAdapter<T> { |
| @Override |
| public View getDropDownView(int position, View convertView, ViewGroup parent) { |
| - View view; |
| + // Don't use the recycled convertView, as it may have the style of the last element. |
| + // Wrap the TextView around with a LinearLayout to display the text in multiple lines. |
| + View view = LayoutInflater.from(mContext).inflate( |
|
Ian Wen
2016/12/20 21:52:23
Oops. Always inflating sounds like a bad idea as i
gogerald1
2016/12/21 00:36:34
Yes, unfortunately getViewTypeCount must return 1
|
| + R.layout.payment_request_dropdown_item, parent, false); |
| + if (position == 0) { |
| + // Padding at the top of the dropdown. |
| + ApiCompatibilityUtils.setPaddingRelative(view, |
| + ApiCompatibilityUtils.getPaddingStart(view), |
| + mContext.getResources().getDimensionPixelSize( |
| + R.dimen.payments_section_small_spacing), |
| + ApiCompatibilityUtils.getPaddingEnd(view), view.getPaddingBottom()); |
| + } |
| + TextView textView = (TextView) view.findViewById(R.id.dropdown_item); |
| + textView.setText(getItem(position).toString()); |
| // Add a "+" icon and a blue tint to the last element. |
| if (position == getCount() - 1) { |
| - view = super.getDropDownView(position, convertView, parent); |
| - TextView tv = (TextView) view; |
| Resources resources = getContext().getResources(); |
| // Create the "+" icon, put it left of the text and add appropriate padding. |
| - tv.setCompoundDrawablesWithIntrinsicBounds( |
| + textView.setCompoundDrawablesWithIntrinsicBounds( |
| TintedDrawable.constructTintedDrawable( |
| - resources, R.drawable.plus, R.color.light_active_color), |
| + resources, R.drawable.plus, R.color.light_active_color), |
| null, null, null); |
| - tv.setCompoundDrawablePadding( |
| + textView.setCompoundDrawablePadding( |
| resources.getDimensionPixelSize(R.dimen.payments_section_large_spacing)); |
| // Set the correct appearance, face and style for the text. |
| - ApiCompatibilityUtils.setTextAppearance(tv, R.style.PaymentsUiSectionAddButtonLabel); |
| - tv.setTypeface(Typeface.create( |
| - resources.getString(R.string.roboto_medium_typeface), |
| - R.integer.roboto_medium_textstyle)); |
| - } else { |
| - // Don't use the recycled convertView, as it may have the style of the last element. |
| - view = super.getDropDownView(position, null, parent); |
| + ApiCompatibilityUtils.setTextAppearance( |
| + textView, R.style.PaymentsUiSectionAddButtonLabel); |
| + textView.setTypeface( |
| + Typeface.create(resources.getString(R.string.roboto_medium_typeface), |
| + R.integer.roboto_medium_textstyle)); |
| + |
| + // Padding at the bottom of the dropdown. |
| + ApiCompatibilityUtils.setPaddingRelative(view, |
| + ApiCompatibilityUtils.getPaddingStart(view), view.getPaddingTop(), |
| + ApiCompatibilityUtils.getPaddingEnd(view), |
| + mContext.getResources().getDimensionPixelSize( |
| + R.dimen.payments_section_small_spacing)); |
| } |
| return view; |