Проблемы с отображением в XML Android

#android

#Android

Вопрос:

Я хочу, чтобы экран выглядел так:

![Что я хочу видеть]http://i.stack.imgur.com/E5L4g.png

И я написал следующий код, чтобы получить что-то подобное:

 <?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"
>
 <ScrollView
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:layout_weight="1"
   android:fillViewport="true">
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@ id/txtSendMail"
            android:layout_gravity="center"
            android:padding="10dip"
            android:text="mail@gmail.com">
        </EditText>
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@ id/txtSubjectMail"
            android:layout_gravity="center"
            android:padding="10dip"
            android:text="Escriba un asunto"
            >
        </EditText>
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@ id/txtBodyMail"
            android:layout_gravity="top"
            android:padding="10dip"
            android:text="Escribe el mensaje aquí."
            android:inputType="textMultiLine">
        </EditText>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@ id/btnSendMail"
            android:text="Send" >
        </Button>
    </LinearLayout>
</ScrollView>
  

Но когда я написал EditText, который будет содержать текст письма, я поставил
android:inputType=»textMultiLine»
android:layout_height=»fill_parent»

Я не вижу кнопки. Я уверен, что EditText, который «заполняет» родительский элемент, скрывает его, но я не знаю, какое свойство установить, если я хочу, чтобы EditText был таким же большим, как остальная часть экрана…

Спасибо!

Ответ №1:

Я немного изменил ваш xml. Я думаю, что ваш текст редактирования тела должен прокручиваться, а не весь макет. Поэтому я удалил scrollview. Вот xml

 <?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">
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@ id/txtSendMail"
            android:padding="10dip"
            android:text="mail@gmail.com">
        </EditText>
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@ id/txtSubjectMail"
            android:padding="10dip"
            android:text="Escriba un asunto"
            >
        </EditText>
        <EditText 
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1.0"
            android:id="@ id/txtBodyMail"
            android:padding="10dip"
            android:text="Escribe el mensaje aquí."
            android:inputType="textMultiLine">
        </EditText>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@ id/btnSendMail"
            android:layout_gravity="center_horizontal"
            android:text="Send" >
        </Button>
</LinearLayout>
  

Если вы хотите, как и раньше, вы можете использовать свой собственный xml, просто обратите внимание, что атрибуты body edittext должны быть

 layout_height="0dip"
layout_weight="1.0"
  

Это сообщает родительскому устройству, что это представление должно занимать оставшееся место после всех других дочерних представлений.

Комментарии:

1. Спасибо, это было решение. Но я хотел прокрутить весь экран, поэтому я не стал удалять if из своего кода, но рост и вес решили мою проблему 🙂