前提条件是只有这个TextView的id不希望使用xml方式 从布局xml文件中解析获取 那样感觉好麻烦 大家帮一下
解决方案 »
- android解析pdf文件的目录
- 请问大家,怎样在非onDraw方法外获取到canvas呢?希望知道的帮帮忙,感激不尽!!
- 高分求助,pc端c++截取android手机端屏幕问题!!希望各位大侠来帮帮我啊!!
- 求解一个数据库小问题
- android2.3 多媒体解码的问题
- OPENGL纹理丢失的问题请教
- android布局问题
- Canvas drawText 方法问题?
- 没做过安卓,做声控拍照容易吗?给比如360相机或者全能相机那样的软件做个外挂,声控之拍照,不知道可不可行?
- Fragment必须要有Activity来进行调用吗?
- 开发这样一个应用很难么???
- 请教高手高手高高手手这个形状怎么绘制出来!!!!!!
你有Id的话tv就自己先获取
tv.getMeasuredWidth();
tv.getMeasuredHeight();我觉得这个应该可以吧我不太懂。表喷我。。
tv.getWidth();
onCreate方法调用时候页面还没有出现
而TextView在没有显示的时候获取到的宽度是0 ....
TextView tv = (TextView) findViewById(R.id.TextViewId);
//TextViewId如果没有设置width
tv.setWidth();
如果我想在textView中输出"1234567890 12345 12345" 这个tv一行可以输出10个文字,那么
系统不会输出
1234567890
12345 1234
5
而是输出
1234567890
12345
12345
这样闲的不整齐
为了解决这个问题 我自己写了一个方法修改tv中text的内容 在特定位置添加\n 比如上面的例子处理后的String就是"1234567890 1234\n5 12345"由于是一个辅助模块 所以我实现这个功能区域限制在onCreate方法之内 不能在onResume()方法中问题详细描述如上:
重申一下问题,免得跑题: 在onCreate()方法中 获取textView的文本显示宽度 也就是(width - paddingleft -paddingRight)后的结果
是一个办法 不过也的确麻烦 我们目前已经妥协了 将那个宽度作为参数传进方法里面了 之前想去自己手动解析xml布局文件来 但是还是感觉麻烦...哎 其实归根结底需要的就是获取xml文件中的那个参数
onCreate(){
method(int width , .....);
}是指 我这个方法的参数 不是onCreate()的参数
宽度是自己在xml中定义的这个自己知道是多少
所以说还是一个可行的办法
但是这样子灵活性还是差了很多
没那么简单 比如文章内容如果是英文 总不能一个词一行把 目前Android系统默认将英文文字和数字合并后画到屏幕上 比如1234567890这个字符串 如果到'5'这个位置 这一行已经没有剩余空间那么 前面的1234也不输出 而是将"1234567890"作为一个整体 全部在下一行输出 这样上一行就剩余了"1234" 这么大的空白空间 显得很不好看 我要做的就是去除Android系统默认的整体输出
把width 值 放在 dimension裏面 通過 getResources().getDimension(id)去獲取
其實為什麽不對字符串去進行操作呢?
TextPaint paint = tvText.getPaint();
int len = (int) paint.measureText(text);
应该就能拿到。拿不到的话。你就在控件重绘后再获取
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int height = mBtnSend.getMeasuredHeight();
int width = mBtnSend.getMeasuredWidth();
System.out.println("height:" + height + " " + "width:" + width);
}
});
有2种方法:
1.如lss所讲的一样:
ViewTreeObserver vto = mBtnSend.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int height = mBtnSend.getMeasuredHeight();
int width = mBtnSend.getMeasuredWidth();
System.out.println("height:" + height + " " + "width:" + width);
}
});2.在Activity里重写方法
public void onWindowFocusChanged(boolean hasFocus);
在窗口第一次获得焦点的时候,肯定能获取到控件的width,height。
textView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { public boolean onPreDraw() {
//这里textView已经初始化完毕,你可以得到所有属性
return true;
}
});
int inth=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
textView.measure(intw, inth);
int intwidth = textView.getMeasuredWidth();
int intheight = textView.getMeasuredHeight();