Skip to content
Snippets Groups Projects
Commit 95e5e267 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Suggestion strip honors RTL layout"

parents 25270ec5 bcd30bf3
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2012, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->
<!-- This is derived from suggestion_word.xml without minWidth attribute and padding -->
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="@dimen/config_suggestion_text_size"
android:gravity="center"
android:paddingLeft="0dp"
android:paddingTop="0dp"
android:paddingRight="0dp"
android:paddingBottom="0dp"
android:focusable="false"
android:clickable="false"
android:singleLine="true"
android:ellipsize="none"
style="?attr/suggestionWordStyle" />
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<include <include
layout="@layout/suggestion_divider" /> layout="@layout/suggestion_divider" />
<include <include
layout="@layout/hint_add_to_dictionary" layout="@layout/suggestion_word"
android:id="@+id/hint_add_to_dictionary" /> android:id="@+id/hint_add_to_dictionary" />
</LinearLayout> </LinearLayout>
</merge> </merge>
...@@ -84,6 +84,7 @@ import com.android.inputmethod.latin.utils.IntentUtils; ...@@ -84,6 +84,7 @@ import com.android.inputmethod.latin.utils.IntentUtils;
import com.android.inputmethod.latin.utils.JniUtils; import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethod.latin.utils.LatinImeLoggerUtils; import com.android.inputmethod.latin.utils.LatinImeLoggerUtils;
import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper; import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import com.android.inputmethod.research.ResearchLogger; import com.android.inputmethod.research.ResearchLogger;
import java.io.FileDescriptor; import java.io.FileDescriptor;
...@@ -1326,7 +1327,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen ...@@ -1326,7 +1327,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// TODO[IL]: Define a clear interface for this // TODO[IL]: Define a clear interface for this
public void setSuggestedWords(final SuggestedWords words, final boolean shouldShow) { public void setSuggestedWords(final SuggestedWords words, final boolean shouldShow) {
if (mSuggestionStripView != null) { if (mSuggestionStripView != null) {
mSuggestionStripView.setSuggestions(words); mSuggestionStripView.setSuggestions(
words, SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype()));
mKeyboardSwitcher.onAutoCorrectionStateChanged(words.mWillAutoCorrect); mKeyboardSwitcher.onAutoCorrectionStateChanged(words.mWillAutoCorrect);
} }
mInputLogic.mSuggestedWords = words; mInputLogic.mSuggestedWords = words;
......
...@@ -28,6 +28,8 @@ import android.graphics.Rect; ...@@ -28,6 +28,8 @@ import android.graphics.Rect;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewCompat;
import android.text.Spannable; import android.text.Spannable;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.Spanned; import android.text.Spanned;
...@@ -39,7 +41,6 @@ import android.text.style.UnderlineSpan; ...@@ -39,7 +41,6 @@ import android.text.style.UnderlineSpan;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
...@@ -88,6 +89,7 @@ final class SuggestionStripLayoutHelper { ...@@ -88,6 +89,7 @@ final class SuggestionStripLayoutHelper {
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";
private static final String RIGHTWARDS_ARROW = "\u2192";
private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD); private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD);
private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan(); private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan();
...@@ -471,10 +473,13 @@ final class SuggestionStripLayoutHelper { ...@@ -471,10 +473,13 @@ final class SuggestionStripLayoutHelper {
final TextView hintView = (TextView)addToDictionaryStrip.findViewById( final TextView hintView = (TextView)addToDictionaryStrip.findViewById(
R.id.hint_add_to_dictionary); R.id.hint_add_to_dictionary);
hintView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); hintView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL | GravityCompat.START);
hintView.setTextColor(mColorAutoCorrect); hintView.setTextColor(mColorAutoCorrect);
final boolean isRtlLanguage = (ViewCompat.getLayoutDirection(addToDictionaryStrip)
== ViewCompat.LAYOUT_DIRECTION_RTL);
final String hintWithArrow = (isRtlLanguage ? RIGHTWARDS_ARROW : LEFTWARDS_ARROW)
+ hintText;
final int hintWidth = width - wordWidth; final int hintWidth = width - wordWidth;
final String hintWithArrow = LEFTWARDS_ARROW + hintText;
final float hintScaleX = getTextScaleX(hintWithArrow, hintWidth, hintView.getPaint()); final float hintScaleX = getTextScaleX(hintWithArrow, hintWidth, hintView.getPaint());
hintView.setText(hintWithArrow); hintView.setText(hintWithArrow);
hintView.setTextScaleX(hintScaleX); hintView.setTextScaleX(hintScaleX);
......
...@@ -18,6 +18,7 @@ package com.android.inputmethod.latin.suggestions; ...@@ -18,6 +18,7 @@ package com.android.inputmethod.latin.suggestions;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.GestureDetector; import android.view.GestureDetector;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -84,6 +85,13 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick ...@@ -84,6 +85,13 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
showSuggestionsStrip(); showSuggestionsStrip();
} }
public void setLayoutDirection(final boolean isRtlLanguage) {
final int layoutDirection = isRtlLanguage ? ViewCompat.LAYOUT_DIRECTION_RTL
: ViewCompat.LAYOUT_DIRECTION_LTR;
ViewCompat.setLayoutDirection(mSuggestionsStrip, layoutDirection);
ViewCompat.setLayoutDirection(mAddToDictionaryStrip, layoutDirection);
}
public void showSuggestionsStrip() { public void showSuggestionsStrip() {
mSuggestionsStrip.setVisibility(VISIBLE); mSuggestionsStrip.setVisibility(VISIBLE);
mAddToDictionaryStrip.setVisibility(INVISIBLE); mAddToDictionaryStrip.setVisibility(INVISIBLE);
...@@ -154,8 +162,9 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick ...@@ -154,8 +162,9 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
mMainKeyboardView = (MainKeyboardView)inputView.findViewById(R.id.keyboard_view); mMainKeyboardView = (MainKeyboardView)inputView.findViewById(R.id.keyboard_view);
} }
public void setSuggestions(final SuggestedWords suggestedWords) { public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
clear(); clear();
mStripVisibilityGroup.setLayoutDirection(isRtlLanguage);
mSuggestedWords = suggestedWords; mSuggestedWords = suggestedWords;
mLayoutHelper.layout(mSuggestedWords, mSuggestionsStrip, this); mLayoutHelper.layout(mSuggestedWords, mSuggestionsStrip, this);
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) { if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
......
...@@ -25,7 +25,6 @@ import android.os.Build; ...@@ -25,7 +25,6 @@ import android.os.Build;
import android.util.Log; import android.util.Log;
import android.view.inputmethod.InputMethodSubtype; import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.DictionaryFactory; import com.android.inputmethod.latin.DictionaryFactory;
import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.R;
...@@ -348,8 +347,6 @@ public final class SubtypeLocaleUtils { ...@@ -348,8 +347,6 @@ public final class SubtypeLocaleUtils {
Arrays.sort(SORTED_RTL_LANGUAGES); Arrays.sort(SORTED_RTL_LANGUAGES);
} }
// TODO: Remove @UsedForTesting annotation.
@UsedForTesting
public static boolean isRtlLanguage(final InputMethodSubtype subtype) { public static boolean isRtlLanguage(final InputMethodSubtype subtype) {
final Locale locale = getSubtypeLocale(subtype); final Locale locale = getSubtypeLocale(subtype);
final String language = locale.getLanguage(); final String language = locale.getLanguage();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment