diff options
author | 2010-02-03 15:35:49 -0800 | |
---|---|---|
committer | 2010-02-03 15:55:12 -0800 | |
commit | 6a6075caba3865383eeeb52cccc63a28e4ae5900 (patch) | |
tree | 59cc6f7b0cb8d6700cc066e665d4273766dc943c /src/com/android/inputmethod/latin/CandidateView.java | |
parent | f892861b7bf87efbbdbed8f911a715ca1614829b (diff) | |
download | latinime-6a6075caba3865383eeeb52cccc63a28e4ae5900.tar.gz latinime-6a6075caba3865383eeeb52cccc63a28e4ae5900.tar.xz latinime-6a6075caba3865383eeeb52cccc63a28e4ae5900.zip |
Suggest punctuations between word suggestions, for easy access to ?,!, etc.
Also fix a visual bug with the dividers between suggested words.
Diffstat (limited to 'src/com/android/inputmethod/latin/CandidateView.java')
-rwxr-xr-x | src/com/android/inputmethod/latin/CandidateView.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/com/android/inputmethod/latin/CandidateView.java b/src/com/android/inputmethod/latin/CandidateView.java index e6a9d6bbf..0b6b89e6b 100755 --- a/src/com/android/inputmethod/latin/CandidateView.java +++ b/src/com/android/inputmethod/latin/CandidateView.java @@ -26,6 +26,7 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Typeface; +import android.graphics.Paint.Align; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; @@ -82,7 +83,9 @@ public class CandidateView extends View { private int mDescent; private boolean mScrolled; private int mTargetScrollX; - + + private int mMinTouchableWidth; + private int mTotalWidth; private GestureDetector mGestureDetector; @@ -133,7 +136,10 @@ public class CandidateView extends View { mPaint.setAntiAlias(true); mPaint.setTextSize(mPreviewText.getTextSize()); mPaint.setStrokeWidth(0); + mPaint.setTextAlign(Align.CENTER); mDescent = (int) mPaint.descent(); + // 80 pixels for a 160dpi device would mean half an inch + mMinTouchableWidth = (int) (getResources().getDisplayMetrics().density * 50); mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() { @Override @@ -203,7 +209,7 @@ public class CandidateView extends View { if (getBackground() != null) { getBackground().getPadding(mBgPadding); } - mDivider.setBounds(0, mBgPadding.top, mDivider.getIntrinsicWidth(), + mDivider.setBounds(0, 0, mDivider.getIntrinsicWidth(), mDivider.getIntrinsicHeight()); } int x = 0; @@ -233,7 +239,7 @@ public class CandidateView extends View { wordWidth = mWordWidth[i]; } else { float textWidth = paint.measureText(suggestion, 0, suggestion.length()); - wordWidth = (int) textWidth + X_GAP * 2; + wordWidth = Math.max(mMinTouchableWidth, (int) textWidth + X_GAP * 2); mWordWidth[i] = wordWidth; } @@ -253,7 +259,7 @@ public class CandidateView extends View { } if (canvas != null) { - canvas.drawText(suggestion, 0, suggestion.length(), x + X_GAP, y, paint); + canvas.drawText(suggestion, 0, suggestion.length(), x + wordWidth / 2, y, paint); paint.setColor(mColorOther); canvas.translate(x + wordWidth, 0); mDivider.draw(canvas); @@ -462,7 +468,8 @@ public class CandidateView extends View { + mPreviewText.getPaddingLeft() + mPreviewText.getPaddingRight(); final int popupHeight = mPreviewText.getMeasuredHeight(); //mPreviewText.setVisibility(INVISIBLE); - mPopupPreviewX = mWordX[wordIndex] - mPreviewText.getPaddingLeft() - getScrollX(); + mPopupPreviewX = mWordX[wordIndex] - mPreviewText.getPaddingLeft() - getScrollX() + + (mWordWidth[wordIndex] - wordWidth) / 2; mPopupPreviewY = - popupHeight; mHandler.removeMessages(MSG_REMOVE_PREVIEW); int [] offsetInWindow = new int[2]; @@ -488,6 +495,7 @@ public class CandidateView extends View { private void longPressFirstWord() { CharSequence word = mSuggestions.get(0); + if (word.length() < 2) return; if (mService.addWordToDictionary(word.toString())) { showPreview(0, getContext().getResources().getString(R.string.added_word, word)); } |