2012-01-17 19 views
1

テキストのgetHightとgetWidthをtextViewに入れたいです。私は多くのトピックで参照されていますが、私のproblenをまだ見つけていません。私はたびにアプリの実行をする必要はありませんが、これらのソリューションは、値を取得getHeight()、getWidth()in textView return 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を返します。たとえば、アクティビティのonCreateでアクセスしようとしている場合、ゼロが返されます。 –

答えて

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

関連する問題