2012-01-17 2 views
1

textView에서 텍스트의 getHight 및 getWidth를 원합니다. 나는 많은 주제에서 언급했지만 아직 내 눈썹을 찾지 못했습니다. 일부 항목에서는 일부 솔루션 등을 참조하십시오마다 내가 필요로하는textView에서 getHeight(), getWidth()가 반환됩니다.

@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을 반환합니다. 예를 들어, 활동의 onCreate에서 액세스하려고하면 0이됩니다. –

답변

0

getWidth()getHeight()을 너무 일찍 호출했습니다. UI의 크기가 아직 지정되지 않았으므로 메서드가 정확하게 0을 반환합니다.

+7

그래서 getWidth() 및 getHeight() 메서드를 호출 할 때? – NemoDo

+0

런타임시 구성 요소가 렌더링 될 때 생각합니다 – Charana

0

뷰의 높이 또는 너비를 가져 오려면이 뷰의 onDraw (캔버스 캔버스)를 재정의 할 수 있습니다.

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

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

고맙습니다. 테스트 해 보겠습니다. – NemoDo

+0

TextView를 확장하는 클래스가 필요하지 않습니까? –

-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