TextView
android:textAlignment="center"
android:textColorHint="#adadad"
textAllCaps 在xml布局中把默認(rèn)的大寫改成小寫
mTvMarketPrice.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);設(shè)置中劃線
TextView限制文字個數(shù),過多設(shè)置省略號
android:maxEms="12"
android:ellipsize="end"
android:maxLines="1"
CBAlignTextView【調(diào)整排版】
AutofitTextView【根據(jù)字體長度調(diào)整字體大小】
換行
<TextView
android:gravity="center_horizontal"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="電話客服\n400-878-6616"/>
textview
1煌茬、android:lineSpacingExtra
設(shè)置行間距,如”3dp”。
2、android:lineSpacingMultiplier
設(shè)置行間距的倍數(shù)逝她,如”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);
// 因為從網(wǎng)上下載圖片是耗時操作 所以要開啟新線程
Thread t = new Thread(new Runnable() {
Message msg = Message.obtain();
@Override
public void run() {
/**
* 要實現(xiàn)圖片的顯示需要使用Html.fromHtml的一個重構(gòu)方法:public static Spanned
* fromHtml (String source, Html.ImageGetterimageGetter,
* Html.TagHandler
* tagHandler)其中Html.ImageGetter是一個接口穿稳,我們要實現(xiàn)此接口茴她,在它的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<String> mImagesList = new ArrayList<>();
public URLTagHandler(Context context) {
mContext = context.getApplicationContext();
}
@Override
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
// 處理標(biāo)簽<img>
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);
// 使圖片可點擊并監(jiān)聽點擊事件
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) {
// 進(jìn)行圖片點擊之后的處理
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
設(shè)置初始化的時候沒有焦點在父標(biāo)簽中增加屬性android:focusable="true"
android:focusableInTouchMode="true"
[Android之設(shè)置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光標(biāo)移動到最后面
mEdit.setSelection(mDataList.get(position).length());
setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//
可見的密碼
setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);//不可見的密碼
edittext監(jiān)聽
1. public class MyEditTextChangeListener implements TextWatcher {
2. /**
3. * 編輯框的內(nèi)容發(fā)生改變之前的回調(diào)方法
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. * 編輯框的內(nèi)容正在發(fā)生改變時的回調(diào)方法 >>用戶正在輸入
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. * 編輯框的內(nèi)容改變以后,用戶沒有繼續(xù)輸入時 的回調(diào)方法
21. */
22. @Override
23. public void afterTextChanged(Editable editable) {
24. LogUtils.showLog("MyEditTextChangeListener", "afterTextChanged---");
25. }
26. }
//代碼中運(yùn)用
et_my_product_search.addTextChangedListener(new MyTextChangedListener());