TextView
android:textAlignment="center"
android:textColorHint="#adadad"
textAllCaps 在xml布局中把默认的大写改成小写
mTvMarketPrice.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);设置中划线
TextView限制文字个数,过多设置省略号
android:maxEms="12"
android:ellipsize="end"
android:maxLines="1"
CBAlignTextView【调整排版】
AutofitTextView【根据字体长度调整字体大小】
换行
textview
1、android:lineSpacingExtra
设置行间距,如”3dp”。
2、android:lineSpacingMultiplier
设置行间距的倍数,如”1.2″。
API要21以上
控制字间距用:android:letterSpacing=“”或者setLetterSpacing(float letterSpacing)
mTvDetail.setMovementMethod(ScrollingMovementMethod.getInstance());// 滚动
展示HTML文字和图片
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x101) {
mTvDetail.setText((CharSequence) msg.obj);
}
super.handleMessage(msg);
}
};
private Point mPoint=new Point();
getWindowManager().getDefaultDisplay().getSize(mPoint);
// 因为从网上下载图片是耗时操作 所以要开启新线程
Thread t = new Thread(new Runnable() {
Message msg = Message.obtain();
@Override
public void run() {
/**
* 要实现图片的显示需要使用Html.fromHtml的一个重构方法:public static Spanned
* fromHtml (String source, Html.ImageGetterimageGetter,
* Html.TagHandler
* tagHandler)其中Html.ImageGetter是一个接口,我们要实现此接口,在它的getDrawable
* (String source)方法中返回图片的Drawable对象才可以。
*/
Html.ImageGetter imageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
URL url;
Drawable drawable = null;
try {
url = new URL("https://www.hzjr.com"+source);
drawable = Drawable.createFromStream(
url.openStream(), null);
修改图片大小
// drawable.setBounds(0, 0,
// drawable.getIntrinsicWidth(),
// drawable.getIntrinsicHeight());
drawable.setBounds(0,0, DensityUtil.dip2px(mContext,drawable.getIntrinsicWidth()) > mPoint.x ? mPoint.x:DensityUtil.dip2px(mContext,drawable.getIntrinsicWidth()),
DensityUtil.dip2px(mContext,drawable.getIntrinsicHeight()));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return drawable;
}
};
Looper.prepare();
CharSequence test = Html.fromHtml(bean.getDetail(), imageGetter, new URLTagHandler(mContext));
msg.what = 0x101;
msg.obj = test;
handler.sendMessage(msg);
dialog.dismiss();
}
});
t.start();
public class URLTagHandler implements Html.TagHandler {
private Context mContext;
private PopupWindow popupWindow;
//需要放大的图片
private List mImagesList = new ArrayList<>();
public URLTagHandler(Context context) {
mContext = context.getApplicationContext();
}
@Override
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
// 处理标签
if (tag.toLowerCase(Locale.getDefault()).equals("img")) {
// 获取长度
int len = output.length();
// 获取图片地址
ImageSpan[] images = output.getSpans(len - 1, len, ImageSpan.class);
//
String imgURL = images[0].getSource();
mImagesList.add(imgURL);
// 使图片可点击并监听点击事件
output.setSpan(new ClickableImage(mContext, imgURL), len - 1, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
private class ClickableImage extends ClickableSpan {
private String url;
private Context context;
public ClickableImage(Context context, String url) {
this.context = context;
this.url = url;
}
@Override
public void onClick(View widget) {
// 进行图片点击之后的处理
Intent intent = new Intent(context, BorrowerImageActivity.class);
intent.putExtra("URL",url);
intent.putExtra("IMAGES", ((String[]) mImagesList.toArray(new String[mImagesList.size()])));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
EditText
设置初始化的时候没有焦点在父标签中增加属性android:focusable="true"
android:focusableInTouchMode="true"
[Android之设置EditText输入类型(setInputType()方法和android:inputType属性)](http://blog.csdn.net/u013059863/article/details/49914513)
[隐藏android中EditText的下划线](http://blog.csdn.net/zhuzhiqiang_zhu/article/details/50765728)
android:background="@null"
EditText密码效果
android:inputType="textPassword"
android:password="true" 已过时
将EditText光标移动到最后面
mEdit.setSelection(mDataList.get(position).length());
setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//
可见的密码
setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);//不可见的密码
edittext监听
1. public class MyEditTextChangeListener implements TextWatcher {
2. /**
3. * 编辑框的内容发生改变之前的回调方法
4. */
5. @Override
6. public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
7. LogUtils.showLog("MyEditTextChangeListener", "beforeTextChanged---" + charSequence.toString());
8. }
9.
10. /**
11. * 编辑框的内容正在发生改变时的回调方法 >>用户正在输入
12. * 我们可以在这里实时地 通过搜索匹配用户的输入
13. */
14. @Override
15. public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
16. LogUtils.showLog("MyEditTextChangeListener", "onTextChanged---" + charSequence.toString());
17. }
18.
19. /**
20. * 编辑框的内容改变以后,用户没有继续输入时 的回调方法
21. */
22. @Override
23. public void afterTextChanged(Editable editable) {
24. LogUtils.showLog("MyEditTextChangeListener", "afterTextChanged---");
25. }
26. }
//代码中运用
et_my_product_search.addTextChangedListener(new MyTextChangedListener());