① 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选择手势,从而触发系统内置的复制/粘贴控件。