前提条件是只有这个TextView的id不希望使用xml方式 从布局xml文件中解析获取 那样感觉好麻烦 大家帮一下

解决方案 »

  1.   

    TextView tv = new TextView(this);
    你有Id的话tv就自己先获取
    tv.getMeasuredWidth();
    tv.getMeasuredHeight();我觉得这个应该可以吧我不太懂。表喷我。。
      

  2.   

    TextView tv = (TextView) findViewById(R.id.TextViewId);
    tv.getWidth();
      

  3.   

    2楼的内容不行啊....
    onCreate方法调用时候页面还没有出现 
    而TextView在没有显示的时候获取到的宽度是0 ....
      

  4.   

    ...真是不想在去解析xml文件啦.....
      

  5.   

    那你不要在onCreate中获取了在onResume中进行相关操作吧。楼主你还是说下你要实现什么效果或功能吧,或许是你的思路问题。
      

  6.   

    setContentView(R.layout.xml); oncreate方法  先执行这个  获得xml的资源  
    TextView tv = (TextView) findViewById(R.id.TextViewId);
    //TextViewId如果没有设置width
    tv.setWidth();   
      

  7.   

    我要做的功能是取出Android系统自动换行导致的文字段落尾端不整齐效果 比如下面的例子:
    如果我想在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)后的结果
      

  8.   

    onCreate的确不能够得到各个控件的size,建议楼主在onCreate中启动一个线程,稍后去读取这个值。
      

  9.   


    是一个办法 不过也的确麻烦 我们目前已经妥协了 将那个宽度作为参数传进方法里面了 之前想去自己手动解析xml布局文件来 但是还是感觉麻烦...哎 其实归根结底需要的就是获取xml文件中的那个参数
      

  10.   

    楼主你好,你的这个解决方法能写的再具体点不??我目前也在纠结这个问题,onCreate不是系统怎么调用的么?怎样做为参数传进去??参数的值怎样获取呢??
      

  11.   

    不不不 你理解错了 我说在onCreate()中当作参数传进去不是说onCreate(Object args) 而是 :
    onCreate(){
     method(int width , .....);
    }是指 我这个方法的参数 不是onCreate()的参数 
    宽度是自己在xml中定义的这个自己知道是多少 
    所以说还是一个可行的办法 
    但是这样子灵活性还是差了很多
      

  12.   

    这个宽度确实可以自己设置,用length调整,但是和你输出格式没有什么关系啊,你遇见空格换行不就行了吗?
      

  13.   


    没那么简单 比如文章内容如果是英文 总不能一个词一行把 目前Android系统默认将英文文字和数字合并后画到屏幕上 比如1234567890这个字符串 如果到'5'这个位置 这一行已经没有剩余空间那么 前面的1234也不输出 而是将"1234567890"作为一个整体 全部在下一行输出 这样上一行就剩余了"1234" 这么大的空白空间 显得很不好看 我要做的就是去除Android系统默认的整体输出 
      

  14.   

    那就用textedit.getLayoutParams().width  吧,  这个参数既可以直接赋值也可以直接引用。
      

  15.   

    在oncreate方法里面不是有一个setContentView吗? 你setContentView之后你再获取高度就不是0了
      

  16.   


    把width 值 放在 dimension裏面  通過 getResources().getDimension(id)去獲取
    其實為什麽不對字符串去進行操作呢?
      

  17.   


    TextPaint paint = tvText.getPaint(); 
    int len = (int) paint.measureText(text); 
      

  18.   

    可以new一个线程,sleep一段时间,大概一秒左右,就能获取了,具体时间你慢慢睡眠时间慢慢调
      

  19.   

    当你setContentView之后,然后再find到那个textview之后,
    应该就能拿到。拿不到的话。你就在控件重绘后再获取
      

  20.   

            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);
                } 
            });
      

  21.   

    在onCreate()里是获取不到控件的width,height的,这个时候控件都没有measure,layout完毕,所以获取到的结果都是0。要获取控件的宽度、高度必须在measure、layout过程完毕之后。
    有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。
      

  22.   

    用下面代码解决:
    textView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {         public boolean onPreDraw() {
    //这里textView已经初始化完毕,你可以得到所有属性
            return true;
    }
    });
      

  23.   

    int intw=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
    int inth=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
    textView.measure(intw, inth);
    int intwidth = textView.getMeasuredWidth();
    int intheight = textView.getMeasuredHeight();