am 333362ad: Merge "Fix the one-suggestion case."
* commit '333362adfc2a6a3df980a23ea58eceea5f695b46': Fix the one-suggestion case.main
commit
12d0e4f337
|
@ -86,6 +86,7 @@ final class SuggestionStripLayoutHelper {
|
||||||
private final float mAlphaObsoleted;
|
private final float mAlphaObsoleted;
|
||||||
private final float mCenterSuggestionWeight;
|
private final float mCenterSuggestionWeight;
|
||||||
private final int mCenterPositionInStrip;
|
private final int mCenterPositionInStrip;
|
||||||
|
private final int mTypedWordPositionWhenAutocorrect;
|
||||||
private final Drawable mMoreSuggestionsHint;
|
private final Drawable mMoreSuggestionsHint;
|
||||||
private static final String MORE_SUGGESTIONS_HINT = "\u2026";
|
private static final String MORE_SUGGESTIONS_HINT = "\u2026";
|
||||||
private static final String LEFTWARDS_ARROW = "\u2190";
|
private static final String LEFTWARDS_ARROW = "\u2190";
|
||||||
|
@ -159,6 +160,10 @@ final class SuggestionStripLayoutHelper {
|
||||||
mMoreSuggestionsHint = getMoreSuggestionsHint(res,
|
mMoreSuggestionsHint = getMoreSuggestionsHint(res,
|
||||||
res.getDimension(R.dimen.more_suggestions_hint_text_size), mColorAutoCorrect);
|
res.getDimension(R.dimen.more_suggestions_hint_text_size), mColorAutoCorrect);
|
||||||
mCenterPositionInStrip = mSuggestionsCountInStrip / 2;
|
mCenterPositionInStrip = mSuggestionsCountInStrip / 2;
|
||||||
|
// Assuming there are at least three suggestions. Also, note that the suggestions are
|
||||||
|
// laid out according to script direction, so this is left of the center for LTR scripts
|
||||||
|
// and right of the center for RTL scripts.
|
||||||
|
mTypedWordPositionWhenAutocorrect = mCenterPositionInStrip - 1;
|
||||||
mMoreSuggestionsBottomGap = res.getDimensionPixelOffset(
|
mMoreSuggestionsBottomGap = res.getDimensionPixelOffset(
|
||||||
R.dimen.more_suggestions_bottom_gap);
|
R.dimen.more_suggestions_bottom_gap);
|
||||||
mMoreSuggestionsRowHeight = res.getDimensionPixelSize(R.dimen.more_suggestions_row_height);
|
mMoreSuggestionsRowHeight = res.getDimensionPixelSize(R.dimen.more_suggestions_row_height);
|
||||||
|
@ -233,24 +238,31 @@ final class SuggestionStripLayoutHelper {
|
||||||
return spannedWord;
|
return spannedWord;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getIndexInSuggestedWords(final int positionInStrip,
|
private int getPositionInSuggestionStrip(final int indexInSuggestedWords,
|
||||||
final SuggestedWords suggestedWords) {
|
final SuggestedWords suggestedWords) {
|
||||||
// TODO: This works for 3 suggestions. Revisit this algorithm when there are 5 or more
|
final int indexToDisplayMostImportantSuggestion;
|
||||||
// suggestions.
|
final int indexToDisplaySecondMostImportantSuggestion;
|
||||||
final int mostImportantIndexInSuggestedWords = suggestedWords.willAutoCorrect()
|
if (suggestedWords.willAutoCorrect()) {
|
||||||
? SuggestedWords.INDEX_OF_AUTO_CORRECTION : SuggestedWords.INDEX_OF_TYPED_WORD;
|
indexToDisplayMostImportantSuggestion = SuggestedWords.INDEX_OF_AUTO_CORRECTION;
|
||||||
if (positionInStrip == mCenterPositionInStrip) {
|
indexToDisplaySecondMostImportantSuggestion = SuggestedWords.INDEX_OF_TYPED_WORD;
|
||||||
return mostImportantIndexInSuggestedWords;
|
} else {
|
||||||
|
indexToDisplayMostImportantSuggestion = SuggestedWords.INDEX_OF_TYPED_WORD;
|
||||||
|
indexToDisplaySecondMostImportantSuggestion = SuggestedWords.INDEX_OF_AUTO_CORRECTION;
|
||||||
}
|
}
|
||||||
if (positionInStrip == mostImportantIndexInSuggestedWords) {
|
if (indexInSuggestedWords == indexToDisplayMostImportantSuggestion) {
|
||||||
return mCenterPositionInStrip;
|
return mCenterPositionInStrip;
|
||||||
}
|
}
|
||||||
return positionInStrip;
|
if (indexInSuggestedWords == indexToDisplaySecondMostImportantSuggestion) {
|
||||||
|
return mTypedWordPositionWhenAutocorrect;
|
||||||
|
}
|
||||||
|
// If neither of those, the order in the suggestion strip is the same as in SuggestedWords.
|
||||||
|
return indexInSuggestedWords;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getSuggestionTextColor(final int positionInStrip,
|
private int getSuggestionTextColor(final int indexInSuggestedWords,
|
||||||
final SuggestedWords suggestedWords) {
|
final SuggestedWords suggestedWords) {
|
||||||
final int indexInSuggestedWords = getIndexInSuggestedWords(positionInStrip, suggestedWords);
|
final int positionInStrip =
|
||||||
|
getPositionInSuggestionStrip(indexInSuggestedWords, suggestedWords);
|
||||||
// TODO: Need to revisit this logic with bigram suggestions
|
// TODO: Need to revisit this logic with bigram suggestions
|
||||||
final boolean isSuggested = (indexInSuggestedWords != SuggestedWords.INDEX_OF_TYPED_WORD);
|
final boolean isSuggested = (indexInSuggestedWords != SuggestedWords.INDEX_OF_TYPED_WORD);
|
||||||
|
|
||||||
|
@ -352,7 +364,7 @@ final class SuggestionStripLayoutHelper {
|
||||||
* increase towards the right for LTR scripts and the left for RTL scripts, starting with 0.
|
* 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}. This
|
* The position of the most important suggestion is in {@link #mCenterPositionInStrip}. This
|
||||||
* usually doesn't match the index in <code>suggedtedWords</code> -- see
|
* usually doesn't match the index in <code>suggedtedWords</code> -- see
|
||||||
* {@link #getIndexInSuggestedWords(int,SuggestedWords)}.
|
* {@link #getPositionInSuggestionStrip(int,SuggestedWords)}.
|
||||||
*
|
*
|
||||||
* @param positionInStrip the position in the suggestion strip.
|
* @param positionInStrip the position in the suggestion strip.
|
||||||
* @param width the maximum width for layout in pixels.
|
* @param width the maximum width for layout in pixels.
|
||||||
|
@ -413,10 +425,19 @@ final class SuggestionStripLayoutHelper {
|
||||||
|
|
||||||
private void setupWordViewsTextAndColor(final SuggestedWords suggestedWords,
|
private void setupWordViewsTextAndColor(final SuggestedWords suggestedWords,
|
||||||
final int countInStrip) {
|
final int countInStrip) {
|
||||||
|
// Clear all suggestions first
|
||||||
|
for (int positionInStrip = 0; 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
final int count = Math.min(suggestedWords.size(), countInStrip);
|
final int count = Math.min(suggestedWords.size(), countInStrip);
|
||||||
for (int positionInStrip = 0; positionInStrip < count; positionInStrip++) {
|
for (int indexInSuggestedWords = 0; indexInSuggestedWords < count;
|
||||||
final int indexInSuggestedWords =
|
indexInSuggestedWords++) {
|
||||||
getIndexInSuggestedWords(positionInStrip, suggestedWords);
|
final int positionInStrip =
|
||||||
|
getPositionInSuggestionStrip(indexInSuggestedWords, suggestedWords);
|
||||||
final TextView wordView = mWordViews.get(positionInStrip);
|
final TextView wordView = mWordViews.get(positionInStrip);
|
||||||
// {@link TextView#getTag()} is used to get the index in suggestedWords at
|
// {@link TextView#getTag()} is used to get the index in suggestedWords at
|
||||||
// {@link SuggestionStripView#onClick(View)}.
|
// {@link SuggestionStripView#onClick(View)}.
|
||||||
|
@ -428,13 +449,6 @@ final class SuggestionStripLayoutHelper {
|
||||||
Utils.getDebugInfo(suggestedWords, indexInSuggestedWords));
|
Utils.getDebugInfo(suggestedWords, indexInSuggestedWords));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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,
|
private void layoutPunctuationSuggestions(final SuggestedWords suggestedWords,
|
||||||
|
|
Loading…
Reference in New Issue