나는 동적으로 버튼을 만들고 있으며 무작위로 화면에 배치하려고합니다. 그렇게하기 위해 화면의 너비에서 단추의 너비를 뺍니다. 문제는 내가 다른 글에서 본 0android button.getWidth()는 값 0을 반환합니다.
기능 button.getWidth()는 항상 사람들이
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
placeButtonsOnScreen();
}
그러나 심지어 내가 그것을 사용하고있을 때, 그것은 작동하지 않습니다를 사용 권장이 반환된다 .
private void placeButtonsOnScreen() {
Random r = new Random();
LinearLayout layout = (LinearLayout) findViewById(R.id.ordered_buttons_layout);
for (int i = 0; i < NUMBER_OF_BUTTONS; i++) {
Button hiddenButton = buttonsArr[i];
// Get random horizontal margin for the button
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
horizontalMargin = r
.nextInt(SCREEN_WIDTH - hiddenButton.getWidth());
layoutParams.setMargins(horizontalMargin, 50, 0, 0);
// Add the button to the screen
layout.addView(hiddenButton, layoutParams);
Log.d("button width",String.valueOf(hiddenButton.getWidth()));
}
}
화면에서 버튼의 너비를 뺀 위치를 어떻게 잡을 수 있습니까? 바로 지금 그들은 화면의 오른쪽과 교차로에서 잘립니다.
확실하지 않지만 코드는 버튼이 의미 숨겨져 있다면 그려지지 않기 때문에 너비가 없습니다. measure()와 getMeasuredWidth()를 호출 해보십시오. –
사전 측정보기에 대한 좋은 답변 : http://stackoverflow.com/a/8403680/278385 – jqpubliq