XML LinkРазметка Android XML перепуталась?
Я разрабатываю приложение с несколькими кнопками, но оно работает неправильно.
Это, как он показывает в студии Android
Это, как он показывает в эмуляторе
XML LinkРазметка Android XML перепуталась?
Я разрабатываю приложение с несколькими кнопками, но оно работает неправильно.
Это, как он показывает в студии Android
Это, как он показывает в эмуляторе
Возможной причиной этого может быть у вас есть несколько файлов макет для различного экрана плотность/размер экрана/версия для Android.
Проверьте папку макета и обеспечить там не несколько файлов lauout в нескольких папках;)
Посмотрите на ваше определение XML:
<Button
android:text="Back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button5"
android:layout_toLeftOf="@+id/button2"
android:layout_toStartOf="@+id/progressBar2"
android:layout_marginRight="11dp"
android:layout_marginEnd="11dp"
android:layout_alignBottom="@+id/button2" />
<Button
android:text="Sign up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:id="@+id/button2"
android:layout_below="@+id/editText2"
android:layout_toRightOf="@+id/button5"
android:layout_toEndOf="@+id/progressBar2"
android:layout_marginLeft="14dp"
android:layout_marginStart="14dp" />
Вы основывая положение «Войти -Д»кнопка на„кнопку Назад“, заявив следующее:
android:layout_toRightOf="@+id/button5"
Я собираюсь сделать предположение, что если вы скрываете button5
с помощью View.GONE
, который, в свою очередь, практически не удаляет button5
.
С button5
Отсутствует на вашем макете, button2
больше не будет иметь базы, на которую можно положиться. Таким образом, он перемещается полностью влево.
Решение довольно простое: Используйте View.INVISIBLE
и не View.GONE
скрыть мнения, в настоящее время зависели с другой:
Если вы скрываете это с помощью XML:
android:visibility="invisible"
Если вы скрываете его программно через Java:
button5.setVisibility(View.INVISIBLE);
У вас есть circular dependancy
в вашем XML-макете.
Вы не можете/не должны делать:
<Button
android:id="@+id/button5"
android:layout_toLeftOf="@+id/button2" />
<Button
android:id="@+id/button2"
android:layout_toRightOf="@+id/button5" />
Установите положение одного из них на основе родителя только (например, alignParentLeft="true"
), а затем вы можете установить позицию другой стороны, основываясь на первая кнопка. Circular dependancies
имеют неожиданные результаты, которые могут отображать разные результаты в Studio
и в Android
или в разных версиях Android
.
Я не уверен, почему дисплей корректен в студии Android, но, взглянув на ваш xml, вы можете видеть, что ссылка для back button
и sign up button
испорчена.Помните, что относительное расположение использует понятие наличия view A
, который можно использовать в качестве эталона для определения положения view B
в вашем XML у вас есть:
<Button
android:text="Back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button5"
android:layout_toLeftOf="@+id/button2"
android:layout_toStartOf="@+id/progressBar2"
android:layout_marginRight="11dp"
android:layout_marginEnd="11dp"
android:layout_alignBottom="@+id/button2" />
<Button
android:text="Sign up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:id="@+id/button2"
android:layout_below="@+id/editText2"
android:layout_toRightOf="@+id/button5"
android:layout_toEndOf="@+id/progressBar2"
android:layout_marginLeft="14dp"
android:layout_marginStart="14dp" />
button5
ссылки button2
и наоборот, одна из проблем здесь является вы даже не знаю, где button2
есть, но вы использовали его как ссылку. Кроме того, button5
зависит от позиции button2
, но вы использовали button5
в качестве ссылки для button2
.
Я предлагаю использовать editText2
в качестве справочника для обеих ваших кнопок, так как editText2
установил свою позицию. Используйте android:layout_below="@+id/editText2"
, а затем просто добавьте верхний край в зависимости от того, что вы хотите. после этого, используйте
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
для кнопки возврата, используйте
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
кнопки для регистрации. Затем вы можете просто настроить границу для обеих кнопок.
У вас есть круговая зависимость в вашем XML-макете.
вы можете увидеть
Try This
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:ems="10"
android:layout_marginTop="39dp"
android:id="@+id/editText"
android:hint="email"
android:textAlignment="center"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:layout_marginTop="47dp"
android:id="@+id/editText2"
android:hint="pass"
android:textAlignment="center"
android:layout_below="@+id/editText"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText" />
<Button
android:text="Back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button5"
android:layout_toStartOf="@+id/progressBar2"
android:layout_marginRight="11dp"
android:layout_marginEnd="11dp"
android:layout_alignBottom="@+id/button2"
android:layout_toLeftOf="@+id/progressBar2" />
<Button
android:text="Sign up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:id="@+id/button2"
android:layout_below="@+id/editText2"
android:layout_toEndOf="@+id/progressBar2"
android:layout_marginLeft="14dp"
android:layout_marginStart="14dp"
android:layout_toRightOf="@+id/progressBar2" />
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="85dp"
android:id="@+id/progressBar2"
android:layout_below="@+id/button5"
android:layout_centerHorizontal="true" />
</RelativeLayout>
ли вы скрыть ProgressBar с видимостью = нет? Попробуйте использовать visibility = invisible –