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);
}
}
yararlı olacaktır değerleri dönmelidir üzerinde. – ManoDestra
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. –