Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bcd30bf3 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Suggestion strip honors RTL layout

Bug: 9126496
Change-Id: Ia4a1c52bd2a80ea7fe6b9529f2767fee5f9e8aeb
parent 02b08709
Loading
Loading
Loading
Loading
+0 −36
Original line number Diff line number Diff line
<?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" />
+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@
        <include
            layout="@layout/suggestion_divider" />
        <include
            layout="@layout/hint_add_to_dictionary"
            layout="@layout/suggestion_word"
            android:id="@+id/hint_add_to_dictionary" />
    </LinearLayout>
</merge>
+3 −1
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ import com.android.inputmethod.latin.utils.IntentUtils;
import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethod.latin.utils.LatinImeLoggerUtils;
import com.android.inputmethod.latin.utils.LeakGuardHandlerWrapper;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import com.android.inputmethod.research.ResearchLogger;

import java.io.FileDescriptor;
@@ -1331,7 +1332,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
    // TODO[IL]: Define a clear interface for this
    public void setSuggestedWords(final SuggestedWords words) {
        if (mSuggestionStripView != null) {
            mSuggestionStripView.setSuggestions(words);
            mSuggestionStripView.setSuggestions(
                    words, SubtypeLocaleUtils.isRtlLanguage(mSubtypeSwitcher.getCurrentSubtype()));
            mKeyboardSwitcher.onAutoCorrectionStateChanged(words.mWillAutoCorrect);
        }
        mInputLogic.mSuggestedWords = words;
+8 −3
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewCompat;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
@@ -39,7 +41,6 @@ import android.text.style.UnderlineSpan;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -88,6 +89,7 @@ final class SuggestionStripLayoutHelper {
    private final Drawable mMoreSuggestionsHint;
    private static final String MORE_SUGGESTIONS_HINT = "\u2026";
    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 UNDERLINE_SPAN = new UnderlineSpan();
@@ -471,10 +473,13 @@ final class SuggestionStripLayoutHelper {

        final TextView hintView = (TextView)addToDictionaryStrip.findViewById(
                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);
        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 String hintWithArrow = LEFTWARDS_ARROW + hintText;
        final float hintScaleX = getTextScaleX(hintWithArrow, hintWidth, hintView.getPaint());
        hintView.setText(hintWithArrow);
        hintView.setTextScaleX(hintScaleX);
+10 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.inputmethod.latin.suggestions;

import android.content.Context;
import android.content.res.Resources;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.LayoutInflater;
@@ -84,6 +85,13 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
            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() {
            mSuggestionsStrip.setVisibility(VISIBLE);
            mAddToDictionaryStrip.setVisibility(INVISIBLE);
@@ -154,8 +162,9 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
        mMainKeyboardView = (MainKeyboardView)inputView.findViewById(R.id.keyboard_view);
    }

    public void setSuggestions(final SuggestedWords suggestedWords) {
    public void setSuggestions(final SuggestedWords suggestedWords, final boolean isRtlLanguage) {
        clear();
        mStripVisibilityGroup.setLayoutDirection(isRtlLanguage);
        mSuggestedWords = suggestedWords;
        mLayoutHelper.layout(mSuggestedWords, mSuggestionsStrip, this);
        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
Loading