Как установить разные макеты в 1 XML-файл в Android
-
26-09-2019 - |
Вопрос
Привет, друзья, я установил свой макет через TabLayout в LinearLayout, но все же моя кнопка в конце не может быть установлена должным образом, так как TabLayout делит все поля на количество столбцов, поэтому может кто-нибудь помочь, как установить 2 макета в одном XML-файле означает все поля в TabLayout и оставшиеся кнопки Login и Register в Linear Layout или какие-то другие, чтобы их можно было правильно установить.
Заранее спасибо.
Макет
Имя пользователя !EditTextBox
Пароль !EditTextBox
Авторизоваться !регистр
Кнопка !Кнопка
Я хочу, чтобы мой макет был в указанном выше формате, поэтому я использовал TabLaout, но в этом случае это вызывает просмотр моей кнопки, а также растягивает одну кнопку, чем другую, поскольку EditText больше, чем TextView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="26sp"
android:text="@string/login_text"/>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableRow>
<TextView
android:layout_width="120px"
android:text="User name"
/>
<EditText
android:id="@+id/txtUserName"
android:singleLine="true"
android:maxLength="20"
android:width="195px"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="120px"
android:text="Password"
/>
<EditText
android:id="@+id/txtPassword"
android:width="195px"
android:maxLength="20"
android:singleLine="true"
android:password="true"
/>
</TableRow>
<TableRow>
<TextView />
<CheckBox android:id="@+id/chkRememberPassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Remember Password"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/buttonRegister"
android:text="Register"
android:layout_width="124px"
android:layout_height="wrap_content"
android:layout_below="@+id/chkRememberPassword"
android:layout_alignRight="@+id/chkRememberPassword"
/>
<Button
android:id="@+id/buttonSignIn"
android:text="Log In"
android:layout_width="124px"
android:layout_height="wrap_content"
android:layout_below="@+id/chkRememberPassword"
android:layout_alignLeft="@+id/chkRememberPassword"
/>
</TableRow>
<TextView
android:id="@+id/statusError"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableLayout>
</LinearLayout>
Решение
Я предлагаю вам использовать Wrap_content в TableLayout, и тогда вы можете иметь кнопки в Linearlayout
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
Другие советы
Невозможно установить более одного макета в одном XML-файле...И по той же причине в Android есть макет, макет-альбом и т. д.тип системы папок..
То, что вы можете сделать, описано в 100rabh...Сделайте макет универсальным, применив относительный макет и заполнив родительские настройки...
В противном случае, как я объяснил, вам нужно создать 2 файла макета XML и поместить макет для альбомной ориентации в папку макета-альбомного, таким образом соответствующий макет будет автоматически установлен в соответствии с ориентацией телефона...
Надеюсь, это поможет вам...
Вам нужно создать 2 файла XML:
- Один в обычном
layout
папка - Второй в
res/layout-land
Определить макет для ландшафтной ориентации. Вам нужно будет создатьres/layout-land
папка, если она еще не существует.