0

Boş bir RelativeLayout sahibim. Yükseklik ve düzenin genişliğini almalıyım (ebeveyn ile eşleşecek şekilde ayarlanmış). İnternette arama yapmaya çalıştım ama boşuna. Bu benim kodum, bana yardım edebilir misin? Uygulamayı başlattığımda getCoordinate yönteminde çöküyor. İngilizcem için üzgünüm. Ölçüm() öğesini çağırmamanız gerekir (Göreceli düzen android ölçüsü olsun?

public class MainActivity extends AppCompatActivity { 

Random rand = new Random(); 
int[] coordinate = new int[2]; 

public void getCordinate(final RelativeLayout layout){ 
    layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 
      // Ensure you call it only once : 
      layout.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
      coordinate[0] = layout.getMeasuredWidth();// width must be declare as a field 
      coordinate[1] = layout.getMeasuredHeight();// height must be declare as a fiel 
     } 
    }); 
} 

public void makeButton(RelativeLayout play_area){ 
    int button_x = rand.nextInt(coordinate[0]); 
    int button_y = rand.nextInt(coordinate[1]); 

    Button bomb = new Button(this); 
    bomb.setX((float)button_x); 
    bomb.setY((float)button_y); 
    play_area.addView(bomb); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    RelativeLayout play_area = (RelativeLayout) findViewById(R.id.play_area); 
    play_area.measure(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); 
    getCordinate(play_area); 

    Log.d("Coordinate", "Xmax: " + coordinate[0] + " Ymax: " + coordinate[1]); 

    //makeButton(play_area); 

} 
} 
+0

yararlı olacaktır değerleri dönmelidir üzerinde. – ManoDestra

+0

Görünüşte ölçüyü() çağırmayın. Bu, düzen yöneticisinin görevi. Ayrıca, bir şey çökerse her zaman yığın izlemesi gönderin. –

cevap

0

. Ebeveynin genişliğini/yüksekliğini eşleştirmek için görünümü ayarlamak için sadece .setLayoutParams (genişlik, yükseklik) öğesini çağırabilirsiniz.

ve sade arayarak .getMeasuredWidth() (veya yükseklik) görünümü onların genişlik/yükseklik senin soru yığın izleme dahil muhtemelen cereyan ve ne istisna anlatırsanız

+0

Düzenim, ekran boyutlarına uyum sağlamalıdır. Relativelayput adapte edildiğinde, bu dp içinde boyut almalıyım, .getMeasureWidth() her 0 döndürür –