下面列出了android.widget.TextView#setHint ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private TextView setupDetailsView(final int inputType, final String hint) {
setView(R.layout.activity_two_factor_3_provide_details, R.id.activity_two_factor_3_provide_details);
final TextView detailsText = UI.find(this, R.id.details);
detailsText.setInputType(inputType);
detailsText.setHint(hint);
final InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
// Show the keyboard; this workaround is needed due to Android bugs
detailsText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
detailsText.postDelayed(() -> {
detailsText.requestFocus();
imm.showSoftInput(detailsText, 0);
}, 100);
}
}
});
return detailsText;
}
private void hideInputHint(int index) {
View view = editorCore.getParentView().getChildAt(index);
EditorType type = editorCore.getControlType(view);
if (type != EditorType.INPUT)
return;
String hint = editorCore.getPlaceHolder();
if (index > 0) {
View prevView = editorCore.getParentView().getChildAt(index - 1);
EditorType prevType = editorCore.getControlType(prevView);
if (prevType == EditorType.INPUT)
hint = null;
}
TextView tv = (TextView) view;
tv.setHint(hint);
}
/**
* 设置hint大小
*
* @param size
* @param v
* @param res
*/
public static void setViewHintSize(Context context, int size, TextView v, int res) {
SpannableString ss = new SpannableString(getResources(context).getString(
res));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
v.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失
}
private View getDefaultView(ViewGroup parent) {
View view = inflateDefaultLayout(parent);
TextView textView = (TextView) view.findViewById(android.R.id.text1);
textView.setText("");
textView.setHint(hintResource);
return view;
}
/**
* 设置hint大小
*
* @param size
* @param v
* @param res
*/
public static void setViewHintSize(Context context, int size, TextView v, int res) {
SpannableString ss = new SpannableString(getResources(context).getString(
res));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
v.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失
}
/**
* 设置hint大小
*
* @param size
* @param v
* @param res
*/
public static void setViewHintSize(Context context, int size, TextView v, int res) {
SpannableString ss = new SpannableString(getResources(context).getString(
res));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
v.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
if (position == emptyIndex) {
TextView label = (TextView) view.findViewById(android.R.id.text1);
label.setText("");
label.setHint(getItem(position));
}
return view;
}
@Override
protected void setUpView(View view, Context context, Bundle savedInstanceState,
final SimpleFormDialog.DialogActions actions) {
TextView label = (TextView) view.findViewById(R.id.label);
label.setHint(field.getText(context));
}
/**
* 设置hint大小
*
* @param size
* @param v
* @param res
*/
public static void setViewHintSize(Context context, int size, TextView v, int res) {
SpannableString ss = new SpannableString(getResources(context).getString(
res));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint,一定要进行转换,否则属性会消失
v.setHint(new SpannedString(ss));
}
@Test
public void withHintResourceId_charSequenceTest() {
TextView textView = new TextView(context);
String expectedText = context.getResources().getString(R.string.something);
Spannable textSpan = Spannable.Factory.getInstance().newSpannable(expectedText);
textSpan.setSpan(new ForegroundColorSpan(Color.RED), 0, expectedText.length() - 1, 0);
textView.setHint(textSpan);
assertTrue(withHint(R.string.something).matches(textView));
assertFalse(withHint(R.string.other_string).matches(textView));
}
private void showNextInputHint(int index) {
View view = editorCore.getParentView().getChildAt(index);
EditorType type = editorCore.getControlType(view);
if (type != EditorType.INPUT)
return;
TextView tv = (TextView) view;
tv.setHint(editorCore.getPlaceHolder());
Linkify.addLinks(tv,Linkify.ALL);
}
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (position == emptyIndex) {
TextView label = (TextView) view.findViewById(android.R.id.text1);
label.setText("");
label.setHint(getItem(position));
}
return view;
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
if (position == emptyIndex) {
TextView label = (TextView) view.findViewById(android.R.id.text1);
label.setText("");
label.setHint(getItem(position));
}
return view;
}
@Test
public void withHintNullTest() {
TextView textView = new TextView(context);
textView.setHint(null);
assertTrue(withHint(nullValue(String.class)).matches(textView));
assertFalse(withHint("").matches(textView));
}
/**
* 设置hint大小
*
* @param size
* @param v
* @param res
*/
public static void setViewHintSize(Context context, int size, TextView v, int res) {
SpannableString ss = new SpannableString(getResources(context).getString(
res));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
v.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失
}
/**
* 设置hint大小
*
* @param size
* @param v
* @param res
*/
public static void setViewHintSize(int size, TextView v, int res) {
SpannableString ss = new SpannableString(getResources().getString(
res));
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
v.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失
}
/**
* Sets the searchview's hint icon and text.
*
* @param searchView
* @param drawableResource
* @param hintText
*/
public static void setSearchHintIcon(SearchView searchView, int drawableResource, String hintText) {
try {
// Accessing the SearchAutoComplete
int queryTextViewId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
View autoComplete = searchView.findViewById(queryTextViewId);
//Class<?> clazz = Class.forName("android.widget.SearchView$SearchAutoComplete");
TextView searchBox = (TextView) searchView.findViewById(R.id.search_src_text);
SpannableStringBuilder stopHint = new SpannableStringBuilder(" ");
stopHint.append(hintText);
// Add the icon as an spannable
Drawable searchIcon = searchView.getContext().getResources().getDrawable(drawableResource);
Float rawTextSize = searchBox.getTextSize();
int textSize = (int) (rawTextSize * 1.25);
searchIcon.setBounds(0, 0, textSize, textSize);
stopHint.setSpan(new ImageSpan(searchIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// Set the new hint text
searchBox.setHint(stopHint);
//searchBox.setTextColor(Color.WHITE);
searchBox.setHintTextColor(Color.LTGRAY);
} catch (Exception e) {
Log.e("SearchView", e.getMessage(), e);
}
}
/**
* Sets the searchview's hint icon and text.
*
* @param searchView
* @param drawableResource
* @param hintText
*/
public static void setSearchHintIcon(SearchView searchView, int drawableResource, String hintText) {
try {
// Accessing the SearchAutoComplete
int queryTextViewId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
View autoComplete = searchView.findViewById(queryTextViewId);
//Class<?> clazz = Class.forName("android.widget.SearchView$SearchAutoComplete");
TextView searchBox = (TextView) searchView.findViewById(R.id.search_src_text);
SpannableStringBuilder stopHint = new SpannableStringBuilder(" ");
stopHint.append(hintText);
// Add the icon as an spannable
Drawable searchIcon = searchView.getContext().getResources().getDrawable(drawableResource);
Float rawTextSize = searchBox.getTextSize();
int textSize = (int) (rawTextSize * 1.25);
searchIcon.setBounds(0, 0, textSize, textSize);
stopHint.setSpan(new ImageSpan(searchIcon), 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// Set the new hint text
searchBox.setHint(stopHint);
//searchBox.setTextColor(Color.WHITE);
searchBox.setHintTextColor(Color.LTGRAY);
} catch (Exception e) {
Log.e("SearchView", e.getMessage(), e);
}
}
@Override
public View getBodyView(int viewType, LayoutInflater inflater, ViewGroup parent) {
View view = inflater.inflate(R.layout.rsb_item_date_view, parent, false);
TextView title = (TextView) view.findViewById(R.id.label);
if (viewType == VIEW_TYPE_COMPACT) {
title.setText(step.getTitle());
} else {
title.setVisibility(View.GONE);
}
TextView textView = (TextView) view.findViewById(R.id.value);
textView.setSingleLine(true);
if (step.getPlaceholder() != null) {
textView.setHint(step.getPlaceholder());
} else {
if (format.getStyle() == AnswerFormat.DateAnswerStyle.Date) {
textView.setHint(R.string.rsb_hint_step_body_date);
} else if (format.getStyle() == AnswerFormat.DateAnswerStyle.TimeOfDay) {
textView.setHint(R.string.rsb_hint_step_body_time);
} else if (format.getStyle() == AnswerFormat.DateAnswerStyle.DateAndTime) {
textView.setHint(R.string.rsb_hint_step_body_datetime);
}
}
if (result.getResult() != null) {
textView.setText(createFormattedResult());
}
textView.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) {
showDialog(textView);
}
});
textView.setOnClickListener(v -> {
if (v.isFocused()) {
showDialog(textView);
}
});
Resources res = parent.getResources();
LinearLayout.MarginLayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.leftMargin = res.getDimensionPixelSize(R.dimen.rsb_margin_left);
layoutParams.rightMargin = res.getDimensionPixelSize(R.dimen.rsb_margin_right);
view.setLayoutParams(layoutParams);
return view;
}
/**
* Hook method to set a custom view.
*
* Provides a default implementation using the simple spinner dropdown item.
*
* @param position Position selected
* @param convertView View
* @param parent Parent view group
*/
protected View getCustomView(int position, View convertView, ViewGroup parent) {
View view = inflateDefaultLayout(parent);
Object item = getItem(position);
TextView textView = (TextView) view.findViewById(android.R.id.text1);
textView.setText(item.toString());
textView.setHint("");
return view;
}