① android帶下劃線的TextView
近期在進行項目開發時,需要實現一個帶有下劃線的TextView。經過一番研究,找到了以下幾種實現方法:
1. 設置TextView的Paint屬性:
tv3.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
2. 使用Html類的fromHtml()方法格式化要放入TextView中的文字,與第一種方法類似,只是通過代碼動態設置:
tv1.setText(Html.fromHtml("北京霧霾「凈化」塔更名「警示」塔"));
3. 使用SpannableString類,但遺憾的是,未找到僅修改下劃線顏色的方法,因此只能自定義TextView。繼續研究後,找到了TextView的一些屬性:
TextView的layout中包含各種獲取字元位置、行數、列數等的方法:
layout.getLineForOffset獲取該字元所在行數。
layout.getLineBounds獲取該行的外包矩形(Rect),這樣該字元的頂部Y坐標就是rect的top,底部Y坐標就是rect的bottom。
layout.getPrimaryHorizontal獲取該字元左邊的X坐標。
layout.getSecondaryHorizontal獲取該字元右邊的X坐標。
示例代碼如下:
最後實現的代碼如下:
####ps:在xml中使用範例為:
其中自定義屬性>app:underlineWidth設置下劃線寬度,>app:underlineColor設置下劃線的顏色。
至此,帶有下劃線的TextView製作完成。效果圖如下:
註:同學們若想方便地使用,只需在gradle中加入一行代碼,如下:
compile 'talon.com:underlineText:1.0.0'
附上github地址,歡迎star。
② android 動態更改textview 內容
public class MainActivity extends Activity {
private int index;
private TextView mTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = new TextView(this);
setContentView(mTextView);
new DataThread().start();
}
private String getWebData() {
return String.valueOf(++index);
}
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
mTextView.setText((String)msg.obj);
};
};
private class DataThread extends Thread {
@Override
public void run() {
for(int i = 0; i < 4; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
final String data = getWebData();
// 只能在主線程中修改ui控制項
mHandler.sendMessage(mHandler.obtainMessage(0, data));
}
}
}
}
③ android 怎樣在程序中設置TextView中顯示的值
具體操作如下:
button
bt
=(button)findviewbyid(r.id.button1);
textview
tx=(textview)findviewbyid(r.id.textview1);
tx.settext(bt.gettext());
gettext()就是獲取按鈕上的文字,在textview中顯示出來。
(3)android動態創建textview擴展閱讀:
向用戶顯示文本,並可選擇允許他們編輯文本。TextView是一個完整的文本編輯器,但是基類為不允許編輯;其子類EditText允許文本編輯。
允許用戶復制部分或全部內容,將其粘貼到別的地方,設置XML屬性Android:textisselectable :「真」 或設置相關方法 settextisselectable 為「真」。textisselectable flag 允許用戶在TextView選擇手勢,從而觸發系統內置的復制/粘貼控制項。