У меня есть некоторые кнопки, выложенные в формате RelativeLayout
, и я хочу поместить последнюю кнопку прямо под вторым последним, а также посередине экрана. Первоначально, когда мои кнопки были одна под другой, мой файл XML несколько выглядел следующим образом:Оптимизация кода в java/XML - разработка Android
// некоторые кнопки
<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. Я должен был установить все атрибуты макета в самом файле src Java. Вот код 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 .. любые предложения помогут.
Я изучаю, как использовать разные макеты в андроиде. У меня есть список кнопок, но позволяет говорить только о одной кнопке. Я хочу, чтобы кнопка была посередине экрана, т. Е. Я хочу рассчитать ее LeftMargin во время выполнения, поэтому, очевидно, XML не сможет сделать это для меня ... Поэтому я сделал это с помощью Java и должен был повторно -define все атрибуты снова, поскольку LayoutParams в XML игнорировались в момент, когда он встретил datepick.setLayoutParams (params); – Rushil
Я не хочу снова определять все параметры (ширина, высота, относительно того), но только маржа. Как это сделать? – Rushil
Если вы хотите поместить кнопку в центр экрана, вам не нужно вычислять левое поле – slayton