aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-land/dimens.xml5
-rw-r--r--java/res/values-sw600dp-land/dimens.xml4
-rw-r--r--java/res/values-sw600dp/dimens.xml5
-rw-r--r--java/res/values-sw768dp-land/dimens.xml1
-rw-r--r--java/res/values-sw768dp/dimens.xml5
-rw-r--r--java/res/values/attrs.xml2
-rw-r--r--java/res/values/dimens.xml5
-rw-r--r--java/res/values/styles.xml4
-rw-r--r--java/src/com/android/inputmethod/latin/MoreSuggestions.java13
-rw-r--r--java/src/com/android/inputmethod/latin/SuggestionsView.java21
10 files changed, 50 insertions, 15 deletions
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index 9de201ebe..0f9bde882 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -60,7 +60,10 @@
<dimen name="suggestions_strip_height">36dip</dimen>
<dimen name="more_suggestions_row_height">36dip</dimen>
- <dimen name="key_preview_backing_height">36dip</dimen>
+ <integer name="max_more_suggestions_row">2</integer>
+ <fraction name="min_more_suggestions_width">60%</fraction>
+ <!-- key_preview_backing_height = more_suggestions_row_height * max_more_suggestions_row -->
+ <dimen name="key_preview_backing_height">72dip</dimen>
<!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
<!-- popup_key_height x 1.2 -->
<dimen name="mini_keyboard_slide_allowance">0.336in</dimen>
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index f1715af64..c1cef1d24 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -51,4 +51,8 @@
<fraction name="key_uppercase_letter_ratio">29%</fraction>
<dimen name="suggestions_strip_padding">40.0mm</dimen>
+ <integer name="max_more_suggestions_row">5</integer>
+ <fraction name="min_more_suggestions_width">50%</fraction>
+ <!-- key_preview_backing_height = more_suggestions_row_height * max_more_suggestions_row -->
+ <dimen name="key_preview_backing_height">220dip</dimen>
</resources>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 3b87fd66b..d02b4eaad 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -68,7 +68,10 @@
<dimen name="suggestions_strip_height">44dip</dimen>
<dimen name="more_suggestions_row_height">44dip</dimen>
- <dimen name="key_preview_backing_height">44dip</dimen>
+ <integer name="max_more_suggestions_row">6</integer>
+ <fraction name="min_more_suggestions_width">90%</fraction>
+ <!-- key_preview_backing_height = more_suggestions_row_height * max_more_suggestions_row -->
+ <dimen name="key_preview_backing_height">264dip</dimen>
<dimen name="suggestions_strip_padding">15.0mm</dimen>
<dimen name="suggestion_min_width">0.3in</dimen>
<dimen name="suggestion_padding">12dip</dimen>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index 7303ea1e7..8f9b00672 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -59,4 +59,5 @@
<dimen name="key_preview_offset_ics">0.05in</dimen>
<dimen name="suggestions_strip_padding">40.0mm</dimen>
+ <fraction name="min_more_suggestions_width">50%</fraction>
</resources>
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 7f799092a..bfc2593db 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -71,7 +71,10 @@
<dimen name="suggestions_strip_height">44dip</dimen>
<dimen name="more_suggestions_row_height">44dip</dimen>
- <dimen name="key_preview_backing_height">44dip</dimen>
+ <integer name="max_more_suggestions_row">6</integer>
+ <fraction name="min_more_suggestions_width">90%</fraction>
+ <!-- key_preview_backing_height = more_suggestions_row_height * max_more_suggestions_row -->
+ <dimen name="key_preview_backing_height">264dip</dimen>
<dimen name="suggestions_strip_padding">15.0mm</dimen>
<dimen name="suggestion_min_width">46dip</dimen>
<dimen name="suggestion_padding">8dip</dimen>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 2af2554a0..20f1e32c8 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -124,6 +124,8 @@
<attr name="colorSuggested" format="color" />
<attr name="suggestionsCountInStrip" format="integer" />
<attr name="centerSuggestionPercentile" format="integer" />
+ <attr name="maxMoreSuggestionsRow" format="integer" />
+ <attr name="minMoreSuggestionsWidth" format="float" />
</declare-styleable>
<declare-styleable name="Keyboard">
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 0ec65e3f8..e75347442 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -80,8 +80,11 @@
<dimen name="more_suggestions_key_horizontal_padding">12dip</dimen>
<dimen name="more_suggestions_row_height">40dip</dimen>
<dimen name="more_suggestions_slide_allowance">0.2in</dimen>
+ <integer name="max_more_suggestions_row">6</integer>
+ <fraction name="min_more_suggestions_width">90%</fraction>
<fraction name="more_suggestions_info_ratio">18%</fraction>
- <dimen name="key_preview_backing_height">40dip</dimen>
+ <!-- key_preview_backing_height = more_suggestions_row_height * max_more_suggestions_row -->
+ <dimen name="key_preview_backing_height">160dip</dimen>
<dimen name="suggestions_strip_padding">0dip</dimen>
<dimen name="suggestion_min_width">44dip</dimen>
<dimen name="suggestion_padding">6dip</dimen>
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 45b98ca4c..dc2021a44 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -92,6 +92,8 @@
<item name="colorSuggested">#FFFCAE00</item>
<item name="suggestionsCountInStrip">@integer/suggestions_count_in_strip</item>
<item name="centerSuggestionPercentile">@integer/center_suggestion_percentile</item>
+ <item name="maxMoreSuggestionsRow">@integer/max_more_suggestions_row</item>
+ <item name="minMoreSuggestionsWidth">@fraction/min_more_suggestions_width</item>
</style>
<style
name="MoreSuggestionsViewStyle"
@@ -242,6 +244,8 @@
<item name="colorSuggested">#FFA7A9AC</item>
<item name="suggestionsCountInStrip">@integer/suggestions_count_in_strip</item>
<item name="centerSuggestionPercentile">@integer/center_suggestion_percentile</item>
+ <item name="maxMoreSuggestionsRow">@integer/max_more_suggestions_row</item>
+ <item name="minMoreSuggestionsWidth">@fraction/min_more_suggestions_width</item>
</style>
<style
name="MoreSuggestionsViewStyle.IceCreamSandwich"
diff --git a/java/src/com/android/inputmethod/latin/MoreSuggestions.java b/java/src/com/android/inputmethod/latin/MoreSuggestions.java
index a9e75b7b3..10d5b5c48 100644
--- a/java/src/com/android/inputmethod/latin/MoreSuggestions.java
+++ b/java/src/com/android/inputmethod/latin/MoreSuggestions.java
@@ -50,8 +50,8 @@ public class MoreSuggestions extends Keyboard {
private static final int MAX_COLUMNS_IN_ROW = 3;
private int mNumRows;
- public int layout(SuggestedWords suggestions, int fromPos, int maxWidth, int maxHeight,
- KeyboardView view) {
+ public int layout(SuggestedWords suggestions, int fromPos, int maxWidth, int minWidth,
+ int maxRow, KeyboardView view) {
clearKeys();
final Paint paint = new Paint();
paint.setAntiAlias(true);
@@ -68,7 +68,7 @@ public class MoreSuggestions extends Keyboard {
final int numColumn = pos - rowStartPos + 1;
if (numColumn > MAX_COLUMNS_IN_ROW
|| !fitInWidth(rowStartPos, pos + 1, maxWidth / numColumn)) {
- if ((row + 1) * mDefaultRowHeight > maxHeight) {
+ if ((row + 1) >= maxRow) {
break;
}
mNumColumnsInRow[row] = pos - rowStartPos;
@@ -81,7 +81,7 @@ public class MoreSuggestions extends Keyboard {
}
mNumColumnsInRow[row] = pos - rowStartPos;
mNumRows = row + 1;
- mWidth = mOccupiedWidth = calcurateMaxRowWidth(fromPos, pos);
+ mWidth = mOccupiedWidth = Math.max(minWidth, calcurateMaxRowWidth(fromPos, pos));
mHeight = mOccupiedHeight = mNumRows * mDefaultRowHeight + mVerticalGap;
return pos - fromPos;
}
@@ -163,13 +163,14 @@ public class MoreSuggestions extends Keyboard {
}
public Builder layout(SuggestedWords suggestions, int fromPos, int maxWidth,
- int maxHeight) {
+ int minWidth, int maxRow) {
final Keyboard keyboard = KeyboardSwitcher.getInstance().getLatinKeyboard();
final int xmlId = R.xml.kbd_suggestions_pane_template;
load(keyboard.mId.cloneWithNewXml(mResources.getResourceEntryName(xmlId), xmlId));
mParams.mVerticalGap = mParams.mTopPadding = keyboard.mVerticalGap / 2;
- final int count = mParams.layout(suggestions, fromPos, maxWidth, maxHeight, mPaneView);
+ final int count = mParams.layout(suggestions, fromPos, maxWidth, minWidth, maxRow,
+ mPaneView);
mFromPos = fromPos;
mToPos = fromPos + count;
mSuggestions = suggestions;
diff --git a/java/src/com/android/inputmethod/latin/SuggestionsView.java b/java/src/com/android/inputmethod/latin/SuggestionsView.java
index f11ac1dcf..e99c6d474 100644
--- a/java/src/com/android/inputmethod/latin/SuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/SuggestionsView.java
@@ -35,7 +35,6 @@ import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
import android.text.style.UnderlineSpan;
import android.util.AttributeSet;
-import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -146,12 +145,15 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
private static class SuggestionsViewParams {
private static final int DEFAULT_SUGGESTIONS_COUNT_IN_STRIP = 3;
private static final int DEFAULT_CENTER_SUGGESTION_PERCENTILE = 40;
+ private static final int DEFAULT_MAX_MORE_SUGGESTIONS_ROW = 2;
private static final int PUNCTUATIONS_IN_STRIP = 6;
public final int mPadding;
public final int mDividerWidth;
public final int mSuggestionsStripHeight;
public final int mSuggestionsCountInStrip;
+ public final int mMaxMoreSuggestionsRow;
+ public final float mMinMoreSuggestionsWidth;
private final List<TextView> mWords;
private final List<View> mDividers;
@@ -211,6 +213,11 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
mCenterSuggestionWeight = a.getInt(
R.styleable.SuggestionsView_centerSuggestionPercentile,
DEFAULT_CENTER_SUGGESTION_PERCENTILE) / 100.0f;
+ mMaxMoreSuggestionsRow = a.getInt(
+ R.styleable.SuggestionsView_maxMoreSuggestionsRow,
+ DEFAULT_MAX_MORE_SUGGESTIONS_ROW);
+ mMinMoreSuggestionsWidth = getRatio(a,
+ R.styleable.SuggestionsView_minMoreSuggestionsWidth);
a.recycle();
mCenterSuggestionIndex = mSuggestionsCountInStrip / 2;
@@ -225,6 +232,11 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
mHintToSaveText = context.getText(R.string.hint_add_to_dictionary);
}
+ // Read fraction value in TypedArray as float.
+ private static float getRatio(TypedArray a, int index) {
+ return a.getFraction(index, 1000, 1000, 1) / 1000.0f;
+ }
+
private CharSequence getStyledSuggestionWord(SuggestedWords suggestions, int pos) {
final CharSequence word = suggestions.getWord(pos);
final boolean isAutoCorrect = pos == 1 && willAutoCorrect(suggestions);
@@ -718,11 +730,10 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
final View container = mMoreSuggestionsContainer;
final int maxWidth = stripWidth - container.getPaddingLeft()
- container.getPaddingRight();
- final DisplayMetrics dm = getContext().getResources().getDisplayMetrics();
- // TODO: Revise how we determine the height
- final int maxHeight = dm.heightPixels - mKeyboardView.getHeight() - getHeight() * 3;
final MoreSuggestions.Builder builder = mMoreSuggestionsBuilder;
- builder.layout(mSuggestions, params.mSuggestionsCountInStrip, maxWidth, maxHeight);
+ builder.layout(mSuggestions, params.mSuggestionsCountInStrip, maxWidth,
+ (int)(maxWidth * params.mMinMoreSuggestionsWidth),
+ params.mMaxMoreSuggestionsRow);
mMoreSuggestionsView.setKeyboard(builder.build());
container.measure(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);