Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.ui; | 5 package org.chromium.ui; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.graphics.Rect; | 8 import android.graphics.Rect; |
| 9 import android.util.Log; | 9 import android.util.Log; |
| 10 import android.view.View; | 10 import android.view.View; |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 | 142 |
| 143 @Override | 143 @Override |
| 144 public void setOnDismissListener(PopupWindow.OnDismissListener listener) { | 144 public void setOnDismissListener(PopupWindow.OnDismissListener listener) { |
| 145 mOnDismissListener = listener; | 145 mOnDismissListener = listener; |
| 146 } | 146 } |
| 147 | 147 |
| 148 /** | 148 /** |
| 149 * Sets the text direction in the dropdown. Should be called before show(). | 149 * Sets the text direction in the dropdown. Should be called before show(). |
| 150 * @param isRtl If true, then dropdown text direciton is right to left. | 150 * @param isRtl If true, then dropdown text direciton is right to left. |
| 151 */ | 151 */ |
| 152 protected void setRtl(boolean isRtl) { | 152 public void setRtl(boolean isRtl) { |
| 153 mRtl = isRtl; | 153 mRtl = isRtl; |
| 154 } | 154 } |
| 155 | 155 |
| 156 /** | 156 /** |
| 157 * Returns the width of the anchor to which this popup is attached. | |
| 158 * @return The width of the anchor. | |
| 159 */ | |
| 160 public float getAnchorWidth() { | |
| 161 return mAnchorWidth; | |
| 162 } | |
| 163 | |
| 164 /** | |
| 157 * Measures the width of the list content. | 165 * Measures the width of the list content. |
| 158 * @return The popup window width in pixels. | 166 * @return The popup window width in pixels. |
| 159 */ | 167 */ |
| 160 private int measureContentWidth() { | 168 private int measureContentWidth() { |
| 169 if (mAdapter == null) return 0; | |
|
aurimas (slooooooooow)
2014/10/23 00:57:01
Why would mAdapter be null?
| |
| 161 int maxWidth = 0; | 170 int maxWidth = 0; |
| 162 View itemView = null; | 171 View[] itemViews = new View[mAdapter.getViewTypeCount()]; |
| 163 if (mAdapter == null) return 0; | |
| 164 final int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec. UNSPECIFIED); | 172 final int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec. UNSPECIFIED); |
| 165 final int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec .UNSPECIFIED); | 173 final int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec .UNSPECIFIED); |
| 166 for (int i = 0; i < mAdapter.getCount(); i++) { | 174 for (int i = 0; i < mAdapter.getCount(); i++) { |
| 167 itemView = mAdapter.getView(i, itemView, null); | 175 int type = mAdapter.getItemViewType(i); |
| 176 itemViews[type] = mAdapter.getView(i, itemViews[type], null); | |
| 177 View itemView = itemViews[type]; | |
| 168 LinearLayout.LayoutParams params = | 178 LinearLayout.LayoutParams params = |
| 169 new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP _CONTENT, | 179 new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP _CONTENT, |
| 170 LinearLayout.LayoutParams.WRAP_CONTENT); | 180 LinearLayout.LayoutParams.WRAP_CONTENT); |
| 171 itemView.setLayoutParams(params); | 181 itemView.setLayoutParams(params); |
| 172 itemView.measure(widthMeasureSpec, heightMeasureSpec); | 182 itemView.measure(widthMeasureSpec, heightMeasureSpec); |
| 173 maxWidth = Math.max(maxWidth, itemView.getMeasuredWidth()); | 183 maxWidth = Math.max(maxWidth, itemView.getMeasuredWidth()); |
| 174 } | 184 } |
| 175 return maxWidth; | 185 return maxWidth; |
| 176 } | 186 } |
| 177 } | 187 } |
| OLD | NEW |