Display suggested word info in debug mode
Bug: 4686782 Change-Id: I0e5bef33aa39c3d6f75edda7818524965aa40b79main
parent
703e7252ba
commit
2442e77985
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/*
|
||||||
|
**
|
||||||
|
** Copyright 2011, 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.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="6sp"
|
||||||
|
android:textColor="@android:color/white"
|
||||||
|
android:visibility="gone"
|
||||||
|
style="?attr/suggestionBackgroundStyle" />
|
|
@ -22,14 +22,34 @@
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
|
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
|
||||||
>
|
>
|
||||||
<include
|
<RelativeLayout
|
||||||
android:id="@+id/candidate_left"
|
android:layout_weight="1.0"
|
||||||
layout="@layout/candidate" />
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="center"
|
||||||
|
>
|
||||||
|
<include
|
||||||
|
android:id="@+id/word_left"
|
||||||
|
layout="@layout/candidate_word" />
|
||||||
|
<include
|
||||||
|
android:id="@+id/info_left"
|
||||||
|
layout="@layout/candidate_info" />
|
||||||
|
</RelativeLayout>
|
||||||
<include
|
<include
|
||||||
layout="@layout/candidate_divider" />
|
layout="@layout/candidate_divider" />
|
||||||
<include
|
<RelativeLayout
|
||||||
android:id="@+id/candidate_center"
|
android:layout_weight="1.0"
|
||||||
layout="@layout/candidate" />
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="center"
|
||||||
|
>
|
||||||
|
<include
|
||||||
|
android:id="@+id/word_center"
|
||||||
|
layout="@layout/candidate_word" />
|
||||||
|
<include
|
||||||
|
android:id="@+id/info_center"
|
||||||
|
layout="@layout/candidate_info" />
|
||||||
|
</RelativeLayout>
|
||||||
<include
|
<include
|
||||||
layout="@layout/candidate_divider" />
|
layout="@layout/candidate_divider" />
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -39,9 +59,19 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
>
|
>
|
||||||
<include
|
<RelativeLayout
|
||||||
android:id="@+id/candidate_right"
|
android:layout_weight="1.0"
|
||||||
layout="@layout/candidate" />
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="center"
|
||||||
|
>
|
||||||
|
<include
|
||||||
|
android:id="@+id/word_right"
|
||||||
|
layout="@layout/candidate_word" />
|
||||||
|
<include
|
||||||
|
android:id="@+id/info_right"
|
||||||
|
layout="@layout/candidate_info" />
|
||||||
|
</RelativeLayout>
|
||||||
<!-- Image drawables are set in CandidateView constructor -->
|
<!-- Image drawables are set in CandidateView constructor -->
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/expand_candidates_pane"
|
android:id="@+id/expand_candidates_pane"
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package com.android.inputmethod.compat;
|
package com.android.inputmethod.compat;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewGroup.MarginLayoutParams;
|
import android.view.ViewGroup.MarginLayoutParams;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
|
@ -49,4 +50,14 @@ public class FrameLayoutCompatUtils {
|
||||||
+ placer.getClass().getName());
|
+ placer.getClass().getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void placeViewAt(View view, int x, int y, int w, int h) {
|
||||||
|
final ViewGroup.LayoutParams lp = view.getLayoutParams();
|
||||||
|
if (lp instanceof MarginLayoutParams) {
|
||||||
|
final MarginLayoutParams marginLayoutParams = (MarginLayoutParams)lp;
|
||||||
|
marginLayoutParams.width = w;
|
||||||
|
marginLayoutParams.height = h;
|
||||||
|
marginLayoutParams.setMargins(x, y, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,6 @@ import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewConfiguration;
|
import android.view.ViewConfiguration;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewGroup.MarginLayoutParams;
|
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
import android.widget.PopupWindow;
|
import android.widget.PopupWindow;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
@ -998,10 +997,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
|
||||||
|
|
||||||
// Place the key preview.
|
// Place the key preview.
|
||||||
// TODO: Adjust position of key previews which touch screen edges
|
// TODO: Adjust position of key previews which touch screen edges
|
||||||
final MarginLayoutParams lp = (MarginLayoutParams)previewText.getLayoutParams();
|
FrameLayoutCompatUtils.placeViewAt(
|
||||||
lp.width = previewWidth;
|
previewText, previewX, previewY, previewWidth, previewHeight);
|
||||||
lp.height = previewHeight;
|
|
||||||
lp.setMargins(previewX, previewY, 0, 0);
|
|
||||||
previewText.setVisibility(VISIBLE);
|
previewText.setVisibility(VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
private ViewGroup mCandidatesPaneContainer;
|
private ViewGroup mCandidatesPaneContainer;
|
||||||
private View mKeyboardView;
|
private View mKeyboardView;
|
||||||
private final ArrayList<TextView> mWords = new ArrayList<TextView>();
|
private final ArrayList<TextView> mWords = new ArrayList<TextView>();
|
||||||
|
private final ArrayList<TextView> mInfos = new ArrayList<TextView>();
|
||||||
private final ArrayList<View> mDividers = new ArrayList<View>();
|
private final ArrayList<View> mDividers = new ArrayList<View>();
|
||||||
private final int mCandidatePadding;
|
private final int mCandidatePadding;
|
||||||
private final int mCandidateStripHeight;
|
private final int mCandidateStripHeight;
|
||||||
|
@ -177,29 +178,32 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
mCandidatePadding = res.getDimensionPixelOffset(R.dimen.candidate_padding);
|
mCandidatePadding = res.getDimensionPixelOffset(R.dimen.candidate_padding);
|
||||||
mCandidateStripHeight = res.getDimensionPixelOffset(R.dimen.candidate_strip_height);
|
mCandidateStripHeight = res.getDimensionPixelOffset(R.dimen.candidate_strip_height);
|
||||||
for (int i = 0; i < MAX_SUGGESTIONS; i++) {
|
for (int i = 0; i < MAX_SUGGESTIONS; i++) {
|
||||||
final TextView tv;
|
final TextView word, info;
|
||||||
switch (i) {
|
switch (i) {
|
||||||
case 0:
|
case 0:
|
||||||
tv = (TextView)findViewById(R.id.candidate_left);
|
word = (TextView)findViewById(R.id.word_left);
|
||||||
tv.setPadding(mCandidatePadding, 0, 0, 0);
|
word.setPadding(mCandidatePadding, 0, 0, 0);
|
||||||
|
info = (TextView)findViewById(R.id.info_left);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
tv = (TextView)findViewById(R.id.candidate_center);
|
word = (TextView)findViewById(R.id.word_center);
|
||||||
|
info = (TextView)findViewById(R.id.info_center);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
tv = (TextView)findViewById(R.id.candidate_right);
|
word = (TextView)findViewById(R.id.word_right);
|
||||||
|
info = (TextView)findViewById(R.id.info_right);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
tv = (TextView)inflater.inflate(R.layout.candidate, null);
|
word = (TextView)inflater.inflate(R.layout.candidate_word, null);
|
||||||
|
info = (TextView)inflater.inflate(R.layout.candidate_info, null);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i < NUM_CANDIDATES_IN_STRIP)
|
word.setTag(i);
|
||||||
setLayoutWeight(tv, 1.0f);
|
word.setOnClickListener(this);
|
||||||
tv.setTag(i);
|
|
||||||
tv.setOnClickListener(this);
|
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
tv.setOnLongClickListener(this);
|
word.setOnLongClickListener(this);
|
||||||
mWords.add(tv);
|
mWords.add(word);
|
||||||
|
mInfos.add(info);
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
final View divider = inflater.inflate(R.layout.candidate_divider, null);
|
final View divider = inflater.inflate(R.layout.candidate_divider, null);
|
||||||
divider.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
|
divider.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
|
||||||
|
@ -263,15 +267,6 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setLayoutWeight(View v, float weight) {
|
|
||||||
ViewGroup.LayoutParams lp = v.getLayoutParams();
|
|
||||||
if (lp instanceof LinearLayout.LayoutParams) {
|
|
||||||
LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams)lp;
|
|
||||||
llp.width = 0;
|
|
||||||
llp.weight = weight;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private CharSequence getStyledCandidateWord(CharSequence word, boolean isAutoCorrect) {
|
private CharSequence getStyledCandidateWord(CharSequence word, boolean isAutoCorrect) {
|
||||||
if (!isAutoCorrect)
|
if (!isAutoCorrect)
|
||||||
return word;
|
return word;
|
||||||
|
@ -308,6 +303,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
clear();
|
clear();
|
||||||
final int paneWidth = getWidth();
|
final int paneWidth = getWidth();
|
||||||
final int dividerWidth = mDividers.get(0).getMeasuredWidth();
|
final int dividerWidth = mDividers.get(0).getMeasuredWidth();
|
||||||
|
final int dividerHeight = mDividers.get(0).getMeasuredHeight();
|
||||||
int x = 0;
|
int x = 0;
|
||||||
int y = 0;
|
int y = 0;
|
||||||
int fromIndex = NUM_CANDIDATES_IN_STRIP;
|
int fromIndex = NUM_CANDIDATES_IN_STRIP;
|
||||||
|
@ -315,10 +311,10 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
closeCandidatesPane();
|
closeCandidatesPane();
|
||||||
mExpandCandidatesPane.setEnabled(count >= NUM_CANDIDATES_IN_STRIP);
|
mExpandCandidatesPane.setEnabled(count >= NUM_CANDIDATES_IN_STRIP);
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
final CharSequence word = suggestions.getWord(i);
|
final CharSequence suggestion = suggestions.getWord(i);
|
||||||
if (word == null) continue;
|
if (suggestion == null) continue;
|
||||||
|
|
||||||
final SuggestedWordInfo info = (suggestedWordInfoList != null)
|
final SuggestedWordInfo suggestionInfo = (suggestedWordInfoList != null)
|
||||||
? suggestedWordInfoList.get(i) : null;
|
? suggestedWordInfoList.get(i) : null;
|
||||||
final boolean isAutoCorrect = suggestions.mHasMinimalSuggestion
|
final boolean isAutoCorrect = suggestions.mHasMinimalSuggestion
|
||||||
&& ((i == 1 && !suggestions.mTypedWordValid)
|
&& ((i == 1 && !suggestions.mTypedWordValid)
|
||||||
|
@ -327,18 +323,37 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
// and there are multiple suggestions, such as the default punctuation list.
|
// and there are multiple suggestions, such as the default punctuation list.
|
||||||
// TODO: Need to revisit this logic with bigram suggestions
|
// TODO: Need to revisit this logic with bigram suggestions
|
||||||
final boolean isSuggestedCandidate = (i != 0);
|
final boolean isSuggestedCandidate = (i != 0);
|
||||||
final boolean isPunctuationSuggestions = (word.length() == 1 && count > 1);
|
final boolean isPunctuationSuggestions = (suggestion.length() == 1 && count > 1);
|
||||||
|
|
||||||
final TextView tv = mWords.get(i);
|
final TextView word = mWords.get(i);
|
||||||
// TODO: Reorder candidates in strip as appropriate. The center candidate should hold
|
// TODO: Reorder candidates in strip as appropriate. The center candidate should hold
|
||||||
// the word when space is typed (valid typed word or auto corrected word).
|
// the word when space is typed (valid typed word or auto corrected word).
|
||||||
tv.setTextColor(getCandidateTextColor(isAutoCorrect,
|
word.setTextColor(getCandidateTextColor(isAutoCorrect,
|
||||||
isSuggestedCandidate || isPunctuationSuggestions, info));
|
isSuggestedCandidate || isPunctuationSuggestions, suggestionInfo));
|
||||||
tv.setText(getStyledCandidateWord(word, isAutoCorrect));
|
word.setText(getStyledCandidateWord(suggestion, isAutoCorrect));
|
||||||
// TODO: call TextView.setTextScaleX() to fit the candidate in single line.
|
// TODO: call TextView.setTextScaleX() to fit the candidate in single line.
|
||||||
if (i >= NUM_CANDIDATES_IN_STRIP) {
|
word.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
|
||||||
tv.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
|
final int width = word.getMeasuredWidth();
|
||||||
final int width = tv.getMeasuredWidth();
|
final int height = word.getMeasuredHeight();
|
||||||
|
|
||||||
|
final TextView info;
|
||||||
|
if (DBG && suggestionInfo != null
|
||||||
|
&& !TextUtils.isEmpty(suggestionInfo.getDebugString())) {
|
||||||
|
info = mInfos.get(i);
|
||||||
|
info.setText(suggestionInfo.getDebugString());
|
||||||
|
info.setVisibility(View.VISIBLE);
|
||||||
|
info.measure(UNSPECIFIED_MEASURESPEC, UNSPECIFIED_MEASURESPEC);
|
||||||
|
} else {
|
||||||
|
info = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i < NUM_CANDIDATES_IN_STRIP) {
|
||||||
|
if (info != null) {
|
||||||
|
final int infoWidth = info.getMeasuredWidth();
|
||||||
|
FrameLayoutCompatUtils.placeViewAt(
|
||||||
|
info, x + width - infoWidth, y, infoWidth, info.getMeasuredHeight());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
// TODO: Handle overflow case.
|
// TODO: Handle overflow case.
|
||||||
if (dividerWidth + x + width >= paneWidth) {
|
if (dividerWidth + x + width >= paneWidth) {
|
||||||
centeringCandidates(fromIndex, i - 1, x, paneWidth);
|
centeringCandidates(fromIndex, i - 1, x, paneWidth);
|
||||||
|
@ -348,23 +363,23 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
}
|
}
|
||||||
if (x != 0) {
|
if (x != 0) {
|
||||||
final View divider = mDividers.get(i - NUM_CANDIDATES_IN_STRIP);
|
final View divider = mDividers.get(i - NUM_CANDIDATES_IN_STRIP);
|
||||||
addCandidateAt(divider, x, y);
|
mCandidatesPane.addView(divider);
|
||||||
|
FrameLayoutCompatUtils.placeViewAt(
|
||||||
|
divider, x, y + (mCandidateStripHeight - dividerHeight) / 2,
|
||||||
|
dividerWidth, dividerHeight);
|
||||||
x += dividerWidth;
|
x += dividerWidth;
|
||||||
}
|
}
|
||||||
addCandidateAt(tv, x, y);
|
mCandidatesPane.addView(word);
|
||||||
|
FrameLayoutCompatUtils.placeViewAt(
|
||||||
|
word, x, y + (mCandidateStripHeight - height) / 2, width, height);
|
||||||
|
if (info != null) {
|
||||||
|
mCandidatesPane.addView(info);
|
||||||
|
final int infoWidth = info.getMeasuredWidth();
|
||||||
|
FrameLayoutCompatUtils.placeViewAt(
|
||||||
|
info, x + width - infoWidth, y, infoWidth, info.getMeasuredHeight());
|
||||||
|
}
|
||||||
x += width;
|
x += width;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DBG && info != null) {
|
|
||||||
final TextView dv = new TextView(getContext(), null);
|
|
||||||
dv.setTextSize(10.0f);
|
|
||||||
dv.setTextColor(0xff808080);
|
|
||||||
dv.setText(info.getDebugString());
|
|
||||||
// TODO: debug view for candidate strip needed.
|
|
||||||
// mCandidatesPane.addView(dv);
|
|
||||||
// LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)dv.getLayoutParams();
|
|
||||||
// lp.gravity = Gravity.BOTTOM;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (x != 0) {
|
if (x != 0) {
|
||||||
// Centering last candidates row.
|
// Centering last candidates row.
|
||||||
|
@ -372,19 +387,15 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addCandidateAt(View v, int x, int y) {
|
|
||||||
final int width = v.getMeasuredWidth();
|
|
||||||
final int height = v.getMeasuredHeight();
|
|
||||||
final MarginLayoutParams marginLayoutParams = FrameLayoutCompatUtils.newLayoutParam(
|
|
||||||
mCandidatesPane, width, height);
|
|
||||||
marginLayoutParams.setMargins(x, y + (mCandidateStripHeight - height) / 2, 0, 0);
|
|
||||||
mCandidatesPane.addView(v, marginLayoutParams);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void centeringCandidates(int from, int to, int width, int paneWidth) {
|
private void centeringCandidates(int from, int to, int width, int paneWidth) {
|
||||||
final ViewGroup pane = mCandidatesPane;
|
final ViewGroup pane = mCandidatesPane;
|
||||||
final int fromIndex = pane.indexOfChild(mWords.get(from));
|
final int fromIndex = pane.indexOfChild(mWords.get(from));
|
||||||
final int toIndex = pane.indexOfChild(mWords.get(to));
|
final int toIndex;
|
||||||
|
if (mInfos.get(to).getParent() != null) {
|
||||||
|
toIndex = pane.indexOfChild(mInfos.get(to));
|
||||||
|
} else {
|
||||||
|
toIndex = pane.indexOfChild(mWords.get(to));
|
||||||
|
}
|
||||||
final int offset = (paneWidth - width) / 2;
|
final int offset = (paneWidth - width) / 2;
|
||||||
for (int index = fromIndex; index <= toIndex; index++) {
|
for (int index = fromIndex; index <= toIndex; index++) {
|
||||||
offsetMargin(pane.getChildAt(index), offset, 0);
|
offsetMargin(pane.getChildAt(index), offset, 0);
|
||||||
|
@ -394,9 +405,9 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
private static void offsetMargin(View v, int dx, int dy) {
|
private static void offsetMargin(View v, int dx, int dy) {
|
||||||
if (v == null)
|
if (v == null)
|
||||||
return;
|
return;
|
||||||
ViewGroup.LayoutParams lp = v.getLayoutParams();
|
final ViewGroup.LayoutParams lp = v.getLayoutParams();
|
||||||
if (lp instanceof ViewGroup.MarginLayoutParams) {
|
if (lp instanceof ViewGroup.MarginLayoutParams) {
|
||||||
ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp;
|
final ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)lp;
|
||||||
mlp.setMargins(mlp.leftMargin + dx, mlp.topMargin + dy, 0, 0);
|
mlp.setMargins(mlp.leftMargin + dx, mlp.topMargin + dy, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -458,8 +469,10 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
|
||||||
public void clear() {
|
public void clear() {
|
||||||
mShowingAddToDictionary = false;
|
mShowingAddToDictionary = false;
|
||||||
mShowingAutoCorrectionInverted = false;
|
mShowingAutoCorrectionInverted = false;
|
||||||
for (int i = 0; i < NUM_CANDIDATES_IN_STRIP; i++)
|
for (int i = 0; i < NUM_CANDIDATES_IN_STRIP; i++) {
|
||||||
mWords.get(i).setText(null);
|
mWords.get(i).setText(null);
|
||||||
|
mInfos.get(i).setVisibility(View.GONE);
|
||||||
|
}
|
||||||
mCandidatesPane.removeAllViews();
|
mCandidatesPane.removeAllViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue