diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 478a5c0204bb2041dd18b889d8c26d22b07fed6c..80bf704dbcf97e9415f5f1dffd6f67b3e0e14f27 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -161,7 +161,7 @@ <declare-styleable name="SuggestionStripView"> <attr name="suggestionStripOption" format="integer"> - <!-- This should be aligned with SuggestionStripViewParams.AUTO_CORRECT_* and etc. --> + <!-- This should be aligned with SuggestionStripLayoutHelper.AUTO_CORRECT_* and etc. --> <flag name="autoCorrectBold" value="0x01" /> <flag name="autoCorrectUnderline" value="0x02" /> <flag name="validTypedWordBold" value="0x04" /> diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index 1f453273b3d27009da2d2acfc0581dc4c92ba743..7a16595a7a999095875085df931ffd5755d6ae8a 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -24,6 +24,9 @@ import java.util.Arrays; import java.util.HashSet; public final class SuggestedWords { + public static final int INDEX_OF_TYPED_WORD = 0; + public static final int INDEX_OF_AUTO_CORRECTION = 1; + private static final ArrayList<SuggestedWordInfo> EMPTY_WORD_INFO_LIST = CollectionUtils.newArrayList(0); public static final SuggestedWords EMPTY = new SuggestedWords( @@ -61,12 +64,12 @@ public final class SuggestedWords { return mSuggestedWordInfoList.size(); } - public String getWord(int pos) { - return mSuggestedWordInfoList.get(pos).mWord; + public String getWord(final int index) { + return mSuggestedWordInfoList.get(index).mWord; } - public SuggestedWordInfo getInfo(int pos) { - return mSuggestedWordInfoList.get(pos); + public SuggestedWordInfo getInfo(final int index) { + return mSuggestedWordInfoList.get(index); } public boolean willAutoCorrect() { @@ -108,8 +111,8 @@ public final class SuggestedWords { SuggestedWordInfo.KIND_TYPED, Dictionary.TYPE_USER_TYPED)); alreadySeen.add(typedWord.toString()); final int previousSize = previousSuggestions.size(); - for (int pos = 1; pos < previousSize; pos++) { - final SuggestedWordInfo prevWordInfo = previousSuggestions.getInfo(pos); + for (int index = 1; index < previousSize; index++) { + final SuggestedWordInfo prevWordInfo = previousSuggestions.getInfo(index); final String prevWord = prevWordInfo.mWord; // Filter out duplicate suggestion. if (!alreadySeen.contains(prevWord)) { diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java index 09f81d4c7dd5fe0c9a07428ef54dce65afc3a113..322ae5b0fe35d64edb1a43c53b5c86db3416959d 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java +++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestions.java @@ -61,7 +61,7 @@ public final class MoreSuggestions extends Keyboard { super(); } - public int layout(final SuggestedWords suggestedWords, final int fromPos, + public int layout(final SuggestedWords suggestedWords, final int fromIndex, final int maxWidth, final int minWidth, final int maxRow, final Paint paint, final Resources res) { clearKeys(); @@ -70,53 +70,54 @@ public final class MoreSuggestions extends Keyboard { final float padding = res.getDimension(R.dimen.more_suggestions_key_horizontal_padding); int row = 0; - int pos = fromPos, rowStartPos = fromPos; + int index = fromIndex; + int rowStartIndex = fromIndex; final int size = Math.min(suggestedWords.size(), SuggestionStripView.MAX_SUGGESTIONS); - while (pos < size) { - final String word = suggestedWords.getWord(pos); + while (index < size) { + final String word = suggestedWords.getWord(index); // TODO: Should take care of text x-scaling. - mWidths[pos] = (int)(TypefaceUtils.getLabelWidth(word, paint) + padding); - final int numColumn = pos - rowStartPos + 1; + mWidths[index] = (int)(TypefaceUtils.getLabelWidth(word, paint) + padding); + final int numColumn = index - rowStartIndex + 1; final int columnWidth = (maxWidth - mDividerWidth * (numColumn - 1)) / numColumn; if (numColumn > MAX_COLUMNS_IN_ROW - || !fitInWidth(rowStartPos, pos + 1, columnWidth)) { + || !fitInWidth(rowStartIndex, index + 1, columnWidth)) { if ((row + 1) >= maxRow) { break; } - mNumColumnsInRow[row] = pos - rowStartPos; - rowStartPos = pos; + mNumColumnsInRow[row] = index - rowStartIndex; + rowStartIndex = index; row++; } - mColumnOrders[pos] = pos - rowStartPos; - mRowNumbers[pos] = row; - pos++; + mColumnOrders[index] = index - rowStartIndex; + mRowNumbers[index] = row; + index++; } - mNumColumnsInRow[row] = pos - rowStartPos; + mNumColumnsInRow[row] = index - rowStartIndex; mNumRows = row + 1; mBaseWidth = mOccupiedWidth = Math.max( - minWidth, calcurateMaxRowWidth(fromPos, pos)); + minWidth, calcurateMaxRowWidth(fromIndex, index)); mBaseHeight = mOccupiedHeight = mNumRows * mDefaultRowHeight + mVerticalGap; - return pos - fromPos; + return index - fromIndex; } - private boolean fitInWidth(final int startPos, final int endPos, final int width) { - for (int pos = startPos; pos < endPos; pos++) { - if (mWidths[pos] > width) + private boolean fitInWidth(final int startIndex, final int endIndex, final int width) { + for (int index = startIndex; index < endIndex; index++) { + if (mWidths[index] > width) return false; } return true; } - private int calcurateMaxRowWidth(final int startPos, final int endPos) { + private int calcurateMaxRowWidth(final int startIndex, final int endIndex) { int maxRowWidth = 0; - int pos = startPos; + int index = startIndex; for (int row = 0; row < mNumRows; row++) { final int numColumnInRow = mNumColumnsInRow[row]; int maxKeyWidth = 0; - while (pos < endPos && mRowNumbers[pos] == row) { - maxKeyWidth = Math.max(maxKeyWidth, mWidths[pos]); - pos++; + while (index < endIndex && mRowNumbers[index] == row) { + maxKeyWidth = Math.max(maxKeyWidth, mWidths[index]); + index++; } maxRowWidth = Math.max(maxRowWidth, maxKeyWidth * numColumnInRow + mDividerWidth * (numColumnInRow - 1)); @@ -130,40 +131,40 @@ public final class MoreSuggestions extends Keyboard { { 2, 0, 1}, }; - public int getNumColumnInRow(final int pos) { - return mNumColumnsInRow[mRowNumbers[pos]]; + public int getNumColumnInRow(final int index) { + return mNumColumnsInRow[mRowNumbers[index]]; } - public int getColumnNumber(final int pos) { - final int columnOrder = mColumnOrders[pos]; - final int numColumn = getNumColumnInRow(pos); + public int getColumnNumber(final int index) { + final int columnOrder = mColumnOrders[index]; + final int numColumn = getNumColumnInRow(index); return COLUMN_ORDER_TO_NUMBER[numColumn - 1][columnOrder]; } - public int getX(final int pos) { - final int columnNumber = getColumnNumber(pos); - return columnNumber * (getWidth(pos) + mDividerWidth); + public int getX(final int index) { + final int columnNumber = getColumnNumber(index); + return columnNumber * (getWidth(index) + mDividerWidth); } - public int getY(final int pos) { - final int row = mRowNumbers[pos]; + public int getY(final int index) { + final int row = mRowNumbers[index]; return (mNumRows -1 - row) * mDefaultRowHeight + mTopPadding; } - public int getWidth(final int pos) { - final int numColumnInRow = getNumColumnInRow(pos); + public int getWidth(final int index) { + final int numColumnInRow = getNumColumnInRow(index); return (mOccupiedWidth - mDividerWidth * (numColumnInRow - 1)) / numColumnInRow; } - public void markAsEdgeKey(final Key key, final int pos) { - final int row = mRowNumbers[pos]; + public void markAsEdgeKey(final Key key, final int index) { + final int row = mRowNumbers[index]; if (row == 0) key.markAsBottomEdge(this); if (row == mNumRows - 1) key.markAsTopEdge(this); final int numColumnInRow = mNumColumnsInRow[row]; - final int column = getColumnNumber(pos); + final int column = getColumnNumber(index); if (column == 0) key.markAsLeftEdge(this); if (column == numColumnInRow - 1) @@ -174,15 +175,15 @@ public final class MoreSuggestions extends Keyboard { public static final class Builder extends KeyboardBuilder<MoreSuggestionsParam> { private final MoreSuggestionsView mPaneView; private SuggestedWords mSuggestedWords; - private int mFromPos; - private int mToPos; + private int mFromIndex; + private int mToIndex; public Builder(final Context context, final MoreSuggestionsView paneView) { super(context, new MoreSuggestionsParam()); mPaneView = paneView; } - public Builder layout(final SuggestedWords suggestedWords, final int fromPos, + public Builder layout(final SuggestedWords suggestedWords, final int fromIndex, final int maxWidth, final int minWidth, final int maxRow, final Keyboard parentKeyboard) { final int xmlId = R.xml.kbd_suggestions_pane_template; @@ -190,10 +191,10 @@ public final class MoreSuggestions extends Keyboard { mParams.mVerticalGap = mParams.mTopPadding = parentKeyboard.mVerticalGap / 2; mPaneView.updateKeyboardGeometry(mParams.mDefaultRowHeight); - final int count = mParams.layout(suggestedWords, fromPos, maxWidth, minWidth, maxRow, + final int count = mParams.layout(suggestedWords, fromIndex, maxWidth, minWidth, maxRow, mPaneView.newLabelPaint(null /* key */), mResources); - mFromPos = fromPos; - mToPos = fromPos + count; + mFromIndex = fromIndex; + mToIndex = fromIndex + count; mSuggestedWords = suggestedWords; return this; } @@ -201,20 +202,20 @@ public final class MoreSuggestions extends Keyboard { @Override public MoreSuggestions build() { final MoreSuggestionsParam params = mParams; - for (int pos = mFromPos; pos < mToPos; pos++) { - final int x = params.getX(pos); - final int y = params.getY(pos); - final int width = params.getWidth(pos); - final String word = mSuggestedWords.getWord(pos); - final String info = Utils.getDebugInfo(mSuggestedWords, pos); - final int index = pos + SUGGESTION_CODE_BASE; + for (int index = mFromIndex; index < mToIndex; index++) { + final int x = params.getX(index); + final int y = params.getY(index); + final int width = params.getWidth(index); + final String word = mSuggestedWords.getWord(index); + final String info = Utils.getDebugInfo(mSuggestedWords, index); + final int indexInMoreSuggestions = index + SUGGESTION_CODE_BASE; final Key key = new Key( - params, word, info, KeyboardIconsSet.ICON_UNDEFINED, index, null, x, y, - width, params.mDefaultRowHeight, 0); - params.markAsEdgeKey(key, pos); + params, word, info, KeyboardIconsSet.ICON_UNDEFINED, indexInMoreSuggestions, + null, x, y, width, params.mDefaultRowHeight, 0); + params.markAsEdgeKey(key, index); params.onAddKey(key); - final int columnNumber = params.getColumnNumber(pos); - final int numColumnInRow = params.getNumColumnInRow(pos); + final int columnNumber = params.getColumnNumber(index); + final int numColumnInRow = params.getNumColumnInRow(index); if (columnNumber < numColumnInRow - 1) { final Divider divider = new Divider(params, params.mDivider, x + width, y, params.mDividerWidth, params.mDefaultRowHeight); diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java index d9bb3eaf4d9ba65528693fad3709383e9a10fcb9..2f2ec356024da39b47a3812d41986ba4464e843c 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java +++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java @@ -23,9 +23,9 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.Paint.Align; import android.graphics.Rect; import android.graphics.Typeface; -import android.graphics.Paint.Align; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.text.Spannable; @@ -40,14 +40,13 @@ import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.view.View.OnClickListener; +import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; import com.android.inputmethod.keyboard.ViewLayoutUtils; import com.android.inputmethod.latin.AutoCorrection; -import com.android.inputmethod.latin.CollectionUtils; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.ResourceUtils; @@ -71,7 +70,11 @@ final class SuggestionStripLayoutHelper { private int mMaxMoreSuggestionsRow; public final float mMinMoreSuggestionsWidth; public final int mMoreSuggestionsBottomGap; + public boolean mMoreSuggestionsAvailable; + // The index of these {@link ArrayList} is the position in the suggestion strip. The indices + // increase towards the right for LTR scripts and the left for RTL scripts, starting with 0. + // The position of the most important suggestion is in {@link #mCenterPositionInStrip} private final ArrayList<TextView> mWordViews; private final ArrayList<View> mDividerViews; private final ArrayList<TextView> mDebugInfoViews; @@ -89,16 +92,14 @@ final class SuggestionStripLayoutHelper { private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD); private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan(); + + private final int mSuggestionStripOption; + // These constants are the flag values of + // {@link R.styleable#SuggestionStripView_suggestionStripOption} attribute. private static final int AUTO_CORRECT_BOLD = 0x01; private static final int AUTO_CORRECT_UNDERLINE = 0x02; private static final int VALID_TYPED_WORD_BOLD = 0x04; - private final int mSuggestionStripOption; - - private final ArrayList<CharSequence> mWords = CollectionUtils.newArrayList(); - - public boolean mMoreSuggestionsAvailable; - private final TextView mWordToSaveView; private final TextView mLeftwardsArrowView; private final TextView mHintToSaveView; @@ -205,7 +206,7 @@ final class SuggestionStripLayoutHelper { return new BitmapDrawable(res, buffer); } - private CharSequence getStyledSuggestionWord(final SuggestedWords suggestedWords, + private CharSequence getStyledSuggestedWord(final SuggestedWords suggestedWords, final int indexInSuggestedWords) { final String word = suggestedWords.getWord(indexInSuggestedWords); final boolean isAutoCorrect = indexInSuggestedWords == 1 @@ -233,7 +234,8 @@ final class SuggestionStripLayoutHelper { final SuggestedWords suggestedWords) { // TODO: This works for 3 suggestions. Revisit this algorithm when there are 5 or more // suggestions. - final int mostImportantIndexInSuggestedWords = suggestedWords.willAutoCorrect() ? 1 : 0; + final int mostImportantIndexInSuggestedWords = suggestedWords.willAutoCorrect() + ? SuggestedWords.INDEX_OF_AUTO_CORRECTION : SuggestedWords.INDEX_OF_TYPED_WORD; if (positionInStrip == mCenterPositionInStrip) { return mostImportantIndexInSuggestedWords; } @@ -245,10 +247,9 @@ final class SuggestionStripLayoutHelper { private int getSuggestionTextColor(final int positionInStrip, final SuggestedWords suggestedWords) { - final int indexInSuggestedWords = getIndexInSuggestedWords( - positionInStrip, suggestedWords); + final int indexInSuggestedWords = getIndexInSuggestedWords(positionInStrip, suggestedWords); // TODO: Need to revisit this logic with bigram suggestions - final boolean isSuggested = (indexInSuggestedWords != 0); + final boolean isSuggested = (indexInSuggestedWords != SuggestedWords.INDEX_OF_TYPED_WORD); final int color; if (positionInStrip == mCenterPositionInStrip && suggestedWords.willAutoCorrect()) { @@ -265,7 +266,8 @@ final class SuggestionStripLayoutHelper { // is in slot 1. if (positionInStrip == mCenterPositionInStrip && AutoCorrection.shouldBlockAutoCorrectionBySafetyNet( - suggestedWords.getWord(1), suggestedWords.getWord(0))) { + suggestedWords.getWord(SuggestedWords.INDEX_OF_AUTO_CORRECTION), + suggestedWords.getWord(SuggestedWords.INDEX_OF_TYPED_WORD))) { return 0xFFFF0000; } } @@ -296,7 +298,7 @@ final class SuggestionStripLayoutHelper { } final int countInStrip = mSuggestionsCountInStrip; - setupWords(suggestedWords, countInStrip); + setupWordViewsTextAndColor(suggestedWords, countInStrip); mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip); int x = 0; for (int positionInStrip = 0; positionInStrip < countInStrip; positionInStrip++) { @@ -308,41 +310,37 @@ final class SuggestionStripLayoutHelper { } final int width = getSuggestionWidth(positionInStrip, placerView.getWidth()); - final TextView wordView = layoutWord(suggestedWords, positionInStrip, width); + final TextView wordView = layoutWord(positionInStrip, width); stripView.addView(wordView); setLayoutWeight(wordView, getSuggestionWeight(positionInStrip), ViewGroup.LayoutParams.MATCH_PARENT); x += wordView.getMeasuredWidth(); if (SuggestionStripView.DBG) { - layoutDebugInfo(suggestedWords, positionInStrip, placerView, x); + layoutDebugInfo(positionInStrip, placerView, x); } } } /** - * Format appropriately the suggested word indirectly specified by - * <code>positionInStrip</code> as text in a corresponding {@link TextView}. When the - * suggested word doesn't exist, the corresponding {@link TextView} will be disabled - * and never respond to user interaction. The suggested word may be shrunk or ellipsized to - * fit in the specified width. + * Format appropriately the suggested word in {@link #mWordViews} specified by + * <code>positionInStrip</code>. When the suggested word doesn't exist, the corresponding + * {@link TextView} will be disabled and never respond to user interaction. The suggested word + * may be shrunk or ellipsized to fit in the specified width. * * The <code>positionInStrip</code> argument is the index in the suggestion strip. The indices * increase towards the right for LTR scripts and the left for RTL scripts, starting with 0. - * The index of the most important suggestion is in {@link #mCenterPositionInStrip}. This + * The position of the most important suggestion is in {@link #mCenterPositionInStrip}. This * usually doesn't match the index in <code>suggedtedWords</code> -- see * {@link #getIndexInSuggestedWords(int,SuggestedWords)}. * - * @param suggestedWords the list of suggestions. - * @param positionInStrip the in the suggestion strip. + * @param positionInStrip the position in the suggestion strip. * @param width the maximum width for layout in pixels. * @return the {@link TextView} containing the suggested word appropriately formatted. */ - private TextView layoutWord(final SuggestedWords suggestedWords, final int positionInStrip, - final int width) { - final int indexInSuggestedWords = getIndexInSuggestedWords(positionInStrip, suggestedWords); - final CharSequence word = mWords.get(indexInSuggestedWords); - final TextView wordView = mWordViews.get(indexInSuggestedWords); + private TextView layoutWord(final int positionInStrip, final int width) { + final TextView wordView = mWordViews.get(positionInStrip); + final CharSequence word = wordView.getText(); if (positionInStrip == mCenterPositionInStrip && mMoreSuggestionsAvailable) { // TODO: This "more suggestions hint" should have a nicely designed icon. wordView.setCompoundDrawablesWithIntrinsicBounds( @@ -355,7 +353,6 @@ final class SuggestionStripLayoutHelper { // Disable this suggestion if the suggestion is null or empty. wordView.setEnabled(!TextUtils.isEmpty(word)); - wordView.setTextColor(getSuggestionTextColor(positionInStrip, suggestedWords)); final CharSequence text = getEllipsizedText(word, width, wordView.getPaint()); final float scaleX = wordView.getTextScaleX(); wordView.setText(text); // TextView.setText() resets text scale x to 1.0. @@ -363,18 +360,13 @@ final class SuggestionStripLayoutHelper { return wordView; } - private void layoutDebugInfo(final SuggestedWords suggestedWords, final int positionInStrip, - final ViewGroup placerView, final int x) { - final int indexInSuggestedWords = getIndexInSuggestedWords(positionInStrip, suggestedWords); - if (indexInSuggestedWords >= suggestedWords.size()) { - return; - } - final String debugInfo = Utils.getDebugInfo(suggestedWords, indexInSuggestedWords); + private void layoutDebugInfo(final int positionInStrip, final ViewGroup placerView, + final int x) { + final TextView debugInfoView = mDebugInfoViews.get(positionInStrip); + final CharSequence debugInfo = debugInfoView.getText(); if (debugInfo == null) { return; } - final TextView debugInfoView = mDebugInfoViews.get(indexInSuggestedWords); - debugInfoView.setText(debugInfo); placerView.addView(debugInfoView); debugInfoView.measure( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); @@ -399,39 +391,52 @@ final class SuggestionStripLayoutHelper { return (1.0f - mCenterSuggestionWeight) / (mSuggestionsCountInStrip - 1); } - private void setupWords(final SuggestedWords suggestedWords, final int countInStrip) { - mWords.clear(); + private void setupWordViewsTextAndColor(final SuggestedWords suggestedWords, + final int countInStrip) { final int count = Math.min(suggestedWords.size(), countInStrip); - for (int pos = 0; pos < count; pos++) { - final CharSequence styled = getStyledSuggestionWord(suggestedWords, pos); - mWords.add(styled); + for (int positionInStrip = 0; positionInStrip < count; positionInStrip++) { + final int indexInSuggestedWords = + getIndexInSuggestedWords(positionInStrip, suggestedWords); + final TextView wordView = mWordViews.get(positionInStrip); + // {@link TextView#getTag()} is used to get the index in suggestedWords at + // {@link SuggestionStripView#onClick(View)}. + wordView.setTag(indexInSuggestedWords); + wordView.setText(getStyledSuggestedWord(suggestedWords, indexInSuggestedWords)); + wordView.setTextColor(getSuggestionTextColor(positionInStrip, suggestedWords)); + if (SuggestionStripView.DBG) { + mDebugInfoViews.get(positionInStrip).setText( + Utils.getDebugInfo(suggestedWords, indexInSuggestedWords)); + } } - for (int pos = count; pos < countInStrip; pos++) { - // Make this inactive for touches in layout(). - mWords.add(null); + for (int positionInStrip = count; positionInStrip < countInStrip; positionInStrip++) { + mWordViews.get(positionInStrip).setText(null); + // Make this inactive for touches in {@link #layoutWord(int,int)}. + if (SuggestionStripView.DBG) { + mDebugInfoViews.get(positionInStrip).setText(null); + } } } private void layoutPunctuationSuggestions(final SuggestedWords suggestedWords, final ViewGroup stripView) { final int countInStrip = Math.min(suggestedWords.size(), PUNCTUATIONS_IN_STRIP); - for (int indexInStrip = 0; indexInStrip < countInStrip; indexInStrip++) { - if (indexInStrip != 0) { + for (int positionInStrip = 0; positionInStrip < countInStrip; positionInStrip++) { + if (positionInStrip != 0) { // Add divider if this isn't the left most suggestion in suggestions strip. - addDivider(stripView, mDividerViews.get(indexInStrip)); + addDivider(stripView, mDividerViews.get(positionInStrip)); } - final TextView word = mWordViews.get(indexInStrip); - word.setEnabled(true); - word.setTextColor(mColorAutoCorrect); - final String text = suggestedWords.getWord(indexInStrip); - word.setText(text); - word.setTextScaleX(1.0f); - word.setCompoundDrawables(null, null, null, null); - stripView.addView(word); - setLayoutWeight(word, 1.0f, mSuggestionsStripHeight); + final TextView wordView = mWordViews.get(positionInStrip); + wordView.setEnabled(true); + wordView.setTextColor(mColorAutoCorrect); + final String punctuation = suggestedWords.getWord(positionInStrip); + wordView.setText(punctuation); + wordView.setTextScaleX(1.0f); + wordView.setCompoundDrawables(null, null, null, null); + stripView.addView(wordView); + setLayoutWeight(wordView, 1.0f, mSuggestionsStripHeight); } - mMoreSuggestionsAvailable = false; + mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip); } public void layoutAddToDictionaryHint(final String word, final ViewGroup stripView, diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java index 226bf873e25e7118382c509f43cd746857227d39..b2b9427af3b5d68a9a59b7679a7adbd5f5fa5f89 100644 --- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java +++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java @@ -93,12 +93,10 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick mSuggestionsStrip = (ViewGroup)findViewById(R.id.suggestions_strip); for (int pos = 0; pos < MAX_SUGGESTIONS; pos++) { final TextView word = (TextView)inflater.inflate(R.layout.suggestion_word, null); - word.setTag(pos); word.setOnClickListener(this); word.setOnLongClickListener(this); mWordViews.add(word); final View divider = inflater.inflate(R.layout.suggestion_divider, null); - divider.setTag(pos); divider.setOnClickListener(this); mDividerViews.add(divider); mDebugInfoViews.add((TextView)inflater.inflate(R.layout.suggestion_info, null));