Оптимизация кода в Java / XML - разработка Android - PullRequest
0 голосов
/ 07 октября 2011

У меня есть несколько кнопок в формате RelativeLayout, и я хочу поместить последнюю кнопку прямо под второй последней, но также и посередине экрана. Первоначально, когда мои кнопки были одна под другой, мой XML-файл выглядел примерно так:

// некоторые кнопки

    <Button
        android:id="@+id/cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/ok"
        android:layout_marginLeft="5dip"
        android:layout_below="@id/entry"
        android:text="Cancel" />
    <Button
        android:id="@+id/pickdate"
        android:layout_width="100dip"
        android:layout_height="40dip"
        android:layout_below="@id/cancel"
        android:layout_marginTop="25dip"
        android:layout_marginLeft="30dip"
        android:text="Set Date" />

но когда я хотел установить LeftMargin кнопки «установить дату» (последней) на "width of screen" / 2, мне пришлось кодировать ее на Java, получая ширину с помощью getWindowManager.getDefaultDisplay(). Но при его выполнении казалось, что атрибуты XML, определенные для последней кнопки (только параметры макета), игнорируются. Я предполагаю, что это потому, что Java-код анализируется после XML, и он переопределяет поведение, определенное в XML. Мне пришлось установить все атрибуты макета в самом файле Java SRC. Вот код Java:

        Display display = getWindowManager().getDefaultDisplay();
        int w = display.getWidth();
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

        params.setMargins(w/2, 25, 0, 0);
        params.width = 200;
        params.height = 50;
        params.addRule(RelativeLayout.BELOW, R.id.cancel);
        datepick.setLayoutParams(params);

Только для одного атрибута. Мне пришлось установить все атрибуты в Java. Есть ли способ обойти это? Что-то вроде ссылки на мою переменную w в XML ... любые предложения помогут.

1 Ответ

0 голосов
/ 07 октября 2011

Извините, не ясно, что вы пытаетесь сделать здесь? Вы просто пытаетесь иметь вертикальный список кнопок в центре экрана? Почему бы просто не установить гравитацию в ViewGroup на center?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...