Fix important notice strip text layout

Bug: 10587358
Change-Id: I9cbdd3b450e05d6d0611a16b6b7fad945918dd5f
main
Tadashi G. Takaoka 2014-02-03 15:08:07 +09:00
parent 9221772ab7
commit 9706f9a2f4
3 changed files with 13 additions and 6 deletions

View File

@ -52,9 +52,9 @@
android:layout_height="match_parent">
<TextView
android:id="@+id/important_notice_title"
android:layout_width="0dp"
android:text="@string/important_notice_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:textSize="14sp"
style="?attr/suggestionWordStyle" />
</LinearLayout>

View File

@ -502,11 +502,17 @@ final class SuggestionStripLayoutHelper {
titleView.setTextColor(mColorAutoCorrect);
TextViewCompatUtils.setCompoundDrawablesRelativeWithIntrinsicBounds(
titleView, infoIcon, null, moreIcon, null);
final CharSequence importantNoticeTitle = res.getText(R.string.important_notice_title);
final CharSequence importantNoticeTitle = titleView.getText();
titleView.setTextScaleX(1.0f); // Reset textScaleX.
final float titleScaleX = getTextScaleX(importantNoticeTitle, width, titleView.getPaint());
titleView.setText(importantNoticeTitle);
titleView.setTextScaleX(titleScaleX);
// When the suggestions strip is displayed first time, stripWidth may be zero.
// Then importantNoticeTitle will be displayed as is without auto text scaleX.
// TODO: Fix the logic to always have a correct value of stripWidth.
if (width > 0) {
// Auto text scaleX to show entire important notice title should be on the strip.
final float titleScaleX = getTextScaleX(
importantNoticeTitle, width, titleView.getPaint());
titleView.setTextScaleX(titleScaleX);
}
}
static void setLayoutWeight(final View v, final float weight, final int height) {

View File

@ -220,6 +220,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
return false;
}
// TODO: This method should be called after this View has been attached and displayed.
public void showImportantNoticeTitle() {
mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, getWidth());
mStripVisibilityGroup.showImportantNoticeStrip();