2011-05-13 5 views
3

Comment puis-je obtenir les mesures d'une certaine mise en page comme linearlayout ou relativelayout avec son layout_width et layout_height défini sur wrap_content? en utilisant cette méthodeObtenir les dimensions RelativeLayout

layout.measure(MeasureSpec.makeMeasureSpec(0, 
      MeasureSpec.UNSPECIFIED), 
      MeasureSpec.makeMeasureSpec(0, 
        MeasureSpec.UNSPECIFIED)); 

layout.layout(0, 0, 
      layout.getMeasuredWidth(), 
      layout.getMeasuredHeight()); 

renvoie null. J'essaie de créer une image bitmap hors du relativelayout, un peu comme une capture d'écran.

Répondre

1

Vous pouvez utiliser getMeasuredWidth() et getMeasuredHeight() sur votre affichage.

Rappelez-vous que la vue doit avoir été mise en page en premier. Vous NE POUVEZ PAS le faire dans onCreate, car les tailles ne sont pas encore connues. Vous devez attendre jusqu'à ce qu'il soit mis en page.

+0

si la mise en page est seulement gonflé de xml? – louieansonng

+0

J'utilise ce code pour gonfler la disposition RelativeLayout = (RelativeLayout) getLayoutInflater(). Gonfler (R.layout.pointer, null); ' – louieansonng

5

Ne le faites pas sur la méthode onCreate(). Essayez ceci:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus == true) { 
     LinearLayout myLinearLayout = (LinearLayout) findViewById(R.id.myLinearLayout); 
     int layoutWidth = myLinearLayout.getWidth(); 
     int layoutHeight = myLinearLayout.getHeight(); 
    } 
} 

Cette méthode est appelée après onCreate(), lorsque les tailles sont déjà connues.

+0

Merci. J'ai eu un problème similaire à celui que j'essayais de mesurer dans onCreate. Ce fil a résolu mon problème. – Simon

0

public class AndroidResizeView étend l'activité {

TextView textMyTextView; 
Button myButton; 

RelativeLayout rlayout; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.hightk); 

    rlayout = (RelativeLayout) findViewById(R.id.rlayout); 

    textMyTextView = (TextView) findViewById(R.id.textView1); 

    myButton = (Button) findViewById(R.id.button1); 

    myButton.setOnClickListener(new Button.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      updateSizeInfo(); 
     } 
    }); 
} 

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    updateSizeInfo(); 
} 

private void updateSizeInfo() { 

    textMyTextView.setText(String.valueOf("Width: " 
      + rlayout.getWidth() + "height ::" + rlayout.getHeight())); 

} 

}

Questions connexes