Android 元素的布局位置
Android Layout Position of Elements
如何给布局中的元素一个不变的位置,即使我改变语言也不会改变?我写了这个布局,但不幸的是,当我更改语言时,元素的位置发生了变化,我不希望它发生。如果有人可以帮助我吗?
另外,有什么方法可以让元素在 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>
如果您希望布局不随显示大小而变化,则必须相对于显示进行指定。您可以为此使用 PercentRelativeLayout
并以百分比指定大小。
这需要百分比支持库http://developer.android.com/tools/support-library/features.html#percent
首先仔细阅读THIS。然后考虑用 ScrollView 包裹你的父 LinearLayout。它使您的布局可滚动,您的底部视图将可访问。
对于位置变化,你可以使用RelativeLayout,这是因为你的Example中的语言支持RTL(RightToLeft)。
尝试使用 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>
如何给布局中的元素一个不变的位置,即使我改变语言也不会改变?我写了这个布局,但不幸的是,当我更改语言时,元素的位置发生了变化,我不希望它发生。如果有人可以帮助我吗?
另外,有什么方法可以让元素在 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>
如果您希望布局不随显示大小而变化,则必须相对于显示进行指定。您可以为此使用 PercentRelativeLayout
并以百分比指定大小。
这需要百分比支持库http://developer.android.com/tools/support-library/features.html#percent
首先仔细阅读THIS。然后考虑用 ScrollView 包裹你的父 LinearLayout。它使您的布局可滚动,您的底部视图将可访问。
对于位置变化,你可以使用RelativeLayout,这是因为你的Example中的语言支持RTL(RightToLeft)。
尝试使用 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>