Расположение элементов в Android
Как дать элементам макета постоянную позицию, которая не изменится, если я изменю язык? Я написал этот макет, но, к сожалению, когда я меняю язык, положение элементов меняется, и я не хочу, чтобы это произошло. Если кто-нибудь может мне помочь, пожалуйста?
Кроме того, есть ли способ сделать элементы Подходящими, даже если устройство Android изменилось? Другими словами: этот макет работает на эмуляторе идеального размера, но когда я запускаю приложение на аппаратном устройстве, позиции становятся ниже, и я не могу достичь некоторых из них (в данном случае я имею в виду кнопку)
Это файл макета:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:gravity="center"
android:textStyle="bold"
android:textSize="20dp"
android:text="أهلا بك بقائمة المقترحات"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="wrap_content"
android:id="@+id/suggestiontitle"
android:layout_gravity="right"
android:singleLine="true"
android:gravity="right"
android:layout_marginLeft="20dp"
android:layout_weight="10"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:text="عنوان المقترح"
android:textStyle="bold"
android:layout_gravity="right"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_marginTop="30dp"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:text="نص المقترح"
android:gravity="right"
android:textStyle="bold"
android:layout_gravity="right"
android:layout_weight="1"
android:layout_height="wrap_content" />
<EditText
android:inputType="textMultiLine"
android:layout_marginRight="70dp"
android:lines="10"
android:minLines="6" android:gravity="top|left"
android:maxLines="10"
android:layout_gravity="right"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/suggestioncontent"
android:scrollbars="vertical"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:orientation="horizontal">
<EditText
android:layout_width="wrap_content"
android:layout_marginLeft="20dp"
android:id="@+id/suggestioncontactinfo"
android:layout_weight="10"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:text="معلومات التواصل"
android:textStyle="bold"
android:layout_gravity="right"
android:gravity="right"
android:layout_weight="1"
android:singleLine="true"
android:layout_height="wrap_content" />
</LinearLayout>
<Button
android:layout_width="match_parent"
android:id="@+id/sendsuggestion"
android:text="إرسال المقترح"
android:textStyle="bold"
android:textSize="20dp"
android:layout_height="wrap_content" />
</LinearLayout>
4 ответа
Прежде всего, внимательно прочитайте ЭТО. Затем рассмотрите возможность обернуть ваш родительский LinearLayout в ScrollView. Это делает ваш макет прокручиваемым и ваш вид снизу будет доступен.
Для изменения позиции вы можете использовать RelativeLayout. Это происходит потому, что ваш язык в Примере поддерживает RTL(RightToLeft).
Если вы хотите иметь макет, который не изменяется в зависимости от размера дисплея, он должен быть указан относительно дисплея. Вы можете использовать PercentRelativeLayout
для этого и укажите размеры в процентах.
Для этого требуется библиотека поддержки процентов http://developer.android.com/tools/support-library/features.html
Попробуйте использовать RelativeLayout и обернуть его внутри ScrollView, тогда, если макет выходит за пределы экрана, вы можете прокрутить его, чтобы увидеть остальную часть представления.
<ScrollView>
<RelativeLayout>
<Child Layouts>
</RelativeLayout>
</ScrollView>
Спасибо всем, я использовал Относительный макет, и это решает проблему. это код после его изменения:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:gravity="center"
android:id="@+id/main_text"
android:textStyle="bold"
android:textSize="20dp"
android:text="أهلا بك بقائمة المقترحات"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:text="عنوان المقترح"
android:layout_alignParentRight="true"
android:layout_below="@id/main_text"
android:id="@+id/suggestion_title"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
/>
<EditText
android:layout_below="@id/main_text"
android:layout_marginRight="50dp"
android:layout_toLeftOf="@id/suggestion_title"
android:layout_width="wrap_content"
android:id="@+id/suggestiontitle"
android:layout_gravity="right"
android:singleLine="true"
android:layout_alignParentLeft="true"
android:gravity="right"
android:layout_marginLeft="20dp"
android:layout_weight="10"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/suggestion_text"
android:layout_marginTop="50dp"
android:layout_below="@+id/suggestion_title"
android:layout_width="wrap_content"
android:text="نص المقترح"
android:gravity="right"
android:layout_alignParentRight="true"
android:textStyle="bold"
android:layout_gravity="right"
android:layout_weight="1"
android:layout_height="wrap_content" />
<EditText
android:inputType="textMultiLine"
android:layout_toLeftOf="@id/suggestion_text"
android:layout_alignParentLeft="true"
android:layout_marginRight="50dp"
android:layout_marginLeft="20dp"
android:layout_below="@id/main_text"
android:lines="6"
android:minLines="6"
android:layout_marginTop="80dp"
android:gravity="top|left"
android:maxLines="10"
android:layout_gravity="right"
android:layout_height="200dp"
android:layout_width="match_parent"
android:id="@+id/suggestioncontent"
android:scrollbars="vertical"
/>
<TextView
android:id="@+id/contact_view"
android:layout_marginTop="220dp"
android:layout_below="@id/suggestion_text"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:text="معلومات التواصل"
android:textStyle="bold"
android:layout_gravity="right"
android:gravity="right"
android:layout_weight="1"
android:singleLine="true"
android:layout_height="wrap_content" />
<EditText
android:layout_width="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_below="@id/suggestioncontent"
android:id="@+id/suggestioncontactinfo"
android:layout_toLeftOf="@+id/contact_view"
android:layout_alignParentLeft="true"
android:layout_marginRight="15dp"
android:layout_height="wrap_content" />
<Button
android:layout_width="match_parent"
android:id="@+id/sendsuggestion"
android:text="إرسال المقترح"
android:textStyle="bold"
android:layout_marginTop="50dp"
android:textSize="20dp"
android:layout_below="@id/contact_view"
android:layout_height="wrap_content" />
</RelativeLayout>