如何看到中文方法注释
TextView 超链接
方式一:
String link = "<a href=\"" + subInfo.getOnlineLink() + "\">" + subInfo.getName() + "</a>";
tv.setText(Html.fromHtml(link));
tv.setMovementMethod(LinkMovementMethod.getInstance());
方式二:
SpannableString ss = new SpannableString("text4: Click here .");
ss.setSpan(new StyleSpan(Typeface.BOLD), 0, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// ss.setSpan(new URLSpan("tel:12345678901"), 13, 17,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.setSpan(new URLSpan("https://www.baidu.com/"), 13, 17,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView tv = (TextView) findViewById(R.id.show_text);
tv.setText(ss);
tv.setMovementMethod(LinkMovementMethod.getInstance());
效果图:
SpannableString 字符串设置
推荐链接,内容齐全:点这,包括上下划线、删除线、上下标、超链接、字体颜色、字体大小设置 等等
TextView 设置下划线
//设置下划线
tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
//取消下划线
tv.getPaint().setFlags(0);
在代码中,获取图片高度,设置控件大小
//将获取的图片高度设置给RatingBar
mScoreBar.post(new Runnable() {
@Override
public void run() {
//获取图片的高度
try {
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon_star_gray);
int starsImgHeight = bmp.getHeight();
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mLessonScoreBar.getLayoutParams();
lp.width = LinearLayout.LayoutParams.WRAP_CONTENT;
lp.height = starsImgHeight;
mScoreBar.setLayoutParams(lp);
} catch (Exception e) {
e.printStackTrace();
}
}
});
动态获取控件的宽高属性
方式一:(有时可能获取不到)
view.post(new Runnable() {
@Override
public void run() {
int hight = view.getHeight();
}
});
方式二:(记得remove)
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int hight = view.getHeight();
}
});
动态添加View addview
View videoView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_video_list, null);
ImageView closeIv = (ImageView) videoView.findViewById(R.id.close_iv);
LinearLayout videoList = (LinearLayout) videoView.findViewById(R.id.video_list);
for (int i = 0; i < info.getList().size(); i++) {
View item_view = LayoutInflater.from(getContext()).inflate(R.layout.item_dialog_video_list, null);
TextView videoNameTv = (TextView) item_view.findViewById(R.id.video_name_tv);
TextView videoLookTv = (TextView) item_view.findViewById(R.id.video_look_tv);
final Bean bean = info.getList().get(i);
videoNameTv.setText(bean.getVideoName());
videoLookTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
videoList.addView(item_view);
}
拓展:addview时设置权重
//控件设置权重,在addview之前
view.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f));
动态设置控件属性
方式一:addView的时候
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, fragment.getActivity().getResources().getDisplayMetrics());
if (num == data.size() - 1) {
params.bottomMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, fragment.getActivity().getResources().getDisplayMetrics());
}
mTimeListDateView.addView(periodView, params);
方式二:
TextView periodView = (TextView) findViewById(R.id.text);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) periodView.getLayoutParams();
params.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, fragment.getActivity().getResources().getDisplayMetrics());
periodView.setLayoutParams(params);
部分手机 设置Dialog时,顶部会有蓝线的解决方法a
cardChooseDialog = new Dialog(this);
//去掉部分手机上部出现的蓝色线条
Context context = cardChooseDialog.getContext();
int divierId = context.getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = cardChooseDialog.findViewById(divierId);
if (divider != null)
divider.setBackgroundColor(Color.TRANSPARENT);
cardChooseDialog.setContentView(view);
cardChooseDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
EditText 焦点控制
第一步:在xml文件中(初始化时,Edittext不获取焦点)
android:focusable="true"
android:focusableInTouchMode="true"
第二步:代码中
//失去焦点
searchStrEt.setFocusable(false); //失去焦点
//获取焦点
searchStrEt.setFocusable(true);//设置输入框可聚集
searchStrEt.setFocusableInTouchMode(true);//设置触摸聚焦
searchStrEt.requestFocus();//请求焦点
searchStrEt.findFocus();//获取焦点
// 焦点监听
searchStrEt.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if (hasFocus) { //获取焦点
} else { //失去焦点
}
}
});
输入法显示 & 隐藏 & 设置(显示搜索或完成,需在Edittext xml属性中设置)
/**
* 显示输入法
*
* @param context
* @param editText
*/
public static void showSoftInput(Context context, EditText editText) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
}
/**
* 隐藏输入法
*
* @param context
* @param editText
*/
public static void hideInput(Context context, EditText editText) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
//输入法显示搜索
android:imeActionLabel="搜索"
android:imeOptions="actionSearch"
Android 7.0以上(包含8.0), popupWindow弹窗位置异常, 解决方案
/**
*
* @param pw popupWindow
* @param anchor v
* @param xoff x轴偏移
* @param yoff y轴偏移
*/
public static void showAsDropDown(final PopupWindow pw, final View anchor, final int xoff, final int yoff) {
if (Build.VERSION.SDK_INT >= 24) {
Rect visibleFrame = new Rect();
anchor.getGlobalVisibleRect(visibleFrame);
int height = anchor.getResources().getDisplayMetrics().heightPixels - visibleFrame.bottom;
pw.setHeight(height);
pw.showAsDropDown(anchor, xoff, yoff);
} else {
pw.showAsDropDown(anchor, xoff, yoff);
}
}