2012-01-17 65 views
1

我想在textView中獲取文本的getHight和getWidth。我引用了很多主題,但還沒有發現我的問題。在某些話題看到一些解決方案:getHeight(),getWidth()在textView中返回0

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    Log.d("line", ""+selectA.getLineCount()); 
    Log.d("hight", "" +selectA.getHeight()); 
} 

TextView upV = (TextView)findViewById(R.id.up); 
    ViewTreeObserver vto = upV.getViewTreeObserver(); 
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 

      Log.d("W ", ""+upV.getWidth()); 
      Log.d("H ", ""+upV.getHeight()); 
     } 
    }); 

這些解決方案中獲得價值,因爲我需要但不是每次應用程序運行,一段時間後它返回0。請幫我

+2

如果視圖尚未膨脹,getWidth和getHeight方法將返回0。例如,如果您嘗試在Activity的onCreate中訪問它,您將得到零。 – 2012-01-17 05:16:07

回答

0

您正在致電getWidth()getHeight()爲時尚早。界面的大小和佈局尚未完成,因此,這些方法正確返回0.

+7

那麼,何時調用getWidth()和getHeight()方法? – NemoDo 2012-02-02 03:46:27

+0

我認爲在運行時,當組件呈現 – Charana 2017-06-11 04:35:29

0

要獲取視圖的高度或寬度,您可以覆蓋此視圖的onDraw(Canvas畫布):

@Override 
protected void onDraw(Canvas canvas) 
{ 
    super.onDraw(canvas); 

    int w = getWidth(); 
    int h = getHeight(); 
} 
+0

謝謝,我會測試它 – NemoDo 2012-06-27 08:30:37

+0

你不需要爲此擴展TextView的類嗎? – 2013-11-13 18:01:34

-1

我發現了一個簡單的...非常簡單的解決方案。

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.TextView; 

public class SimpleActivity extends Activity { 

private TextView textView; 
private int displayWidth, displayHeight; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    textView = (TextView) findViewById(R.id.hello_tv);  
    textView.setOnClickListener(    
      new OnClickListener() 
      { 
       @Override 
       public void onClick(View v) { 
        displayWidth = textView.getWidth(); 
        displayHeight = textView.getHeight(); 
        textView.setText(displayWidth + "\n" + displayHeight);      
       } 
      } 
      );    
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 
+1

這不是一個真正的解決方案:它只是在所有UI被膨脹後觸發點擊事件。 – jmaculate 2014-05-06 17:54:56

相關問題