视图隐藏在Android移动应用程序中从纵向到横向的方向更改

时间:2015-06-28 10:20:50

标签: android android-layout android-activity android-orientation

我的申请中有一项活动。在这里,我使用一些编辑框从用户那里获取少量值。问题是,如果手机的方向是纵向,那么我可以看到所有的EditBoxes和按钮,但是当方向变为横向时,按钮变得隐藏,我只能看到前3个编辑框而没有别的。我想要的是,如果出现这种情况并且布局的大小超过手机的高度,则应该出现滚动,以便我可以向下滚动以查看下面的字段和按钮。有没有更好的方法呢???? (对横向模式使用不同的布局将导致重新创建我不想要的活动)

以下是我的活动代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.name.package.service">


<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="@dimen/title_text_size"
    android:textStyle="bold"
    android:gravity="center_horizontal"
    android:id="@+id/tv_lable"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_serivce_description"
    android:gravity="left"
    android:text="@string/plumber_service_description"
    android:textSize="@dimen/description_text_size"
    android:layout_marginTop="@dimen/large_margin"
    android:layout_below="@id/tv_book_service_title_lable"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Name :"
    android:id="@+id/tv_customer_name_label"
    android:layout_below="@id/tv_serivce_description"
    android:layout_marginTop="@dimen/huge_spacing"
    android:textSize="@dimen/label_text_size"
    />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/et_customer_name"
    android:layout_alignBottom="@id/tv_customer_name_label"
    android:layout_toRightOf="@id/tv_customer_name_label"
    android:layout_marginLeft="@dimen/normal_margin"
    android:hint="fiil your name"
    android:gravity="center_horizontal"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Email :"
    android:id="@+id/tv_customer_email_label"
    android:layout_below="@id/tv_customer_name_label"
    android:layout_marginTop="@dimen/large_spacing"
    android:textSize="@dimen/label_text_size"
    />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/et_customer_email"
    android:layout_alignBottom="@id/tv_customer_email_label"
    android:layout_toRightOf="@id/tv_customer_email_label"
    android:layout_marginLeft="@dimen/normal_margin"
    android:hint="fiil your email"
    android:gravity="center_horizontal"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Contact :"
    android:id="@+id/tv_customer_contact_label"
    android:layout_below="@id/tv_customer_email_label"
    android:layout_marginTop="@dimen/large_spacing"
    android:textSize="@dimen/label_text_size"
    />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/et_customer_contact"
    android:layout_alignBottom="@id/tv_customer_contact_label"
    android:layout_toRightOf="@id/tv_customer_contact_label"
    android:layout_marginLeft="@dimen/normal_margin"
    android:hint="fiil your email"
    android:gravity="center_horizontal"
    android:marqueeRepeatLimit="marquee_forever"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_service_description_label"
    android:text="Description"
    android:textSize="@dimen/label_text_size"
    android:layout_below="@id/tv_customer_contact_label"
    android:layout_marginTop="@dimen/large_spacing"
    />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/et_service_description"
    android:layout_below="@id/tv_service_description_label"
    android:layout_marginTop="@dimen/large_margin"
    android:hint="What service you need ?"
    />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Book Service"
    android:gravity="center_horizontal"
    android:layout_below="@id/et_service_description"
    android:layout_marginTop="@dimen/large_margin"
    android:layout_centerHorizontal="true"
    />

我还在清单文件中使用了以下设置

android:configChanges="orientation|keyboardHidden|screenSize"
        android:launchMode="singleTop"

提前感谢您分享知识......:D

2 个答案:

答案 0 :(得分:1)

RelativeLayout内包裹Scrollview的布局。如果布局不适合窗口,则启用滚动以便您滚动并查看所有视图,否则它们将无法在屏幕上显示。

用法

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/ScrollViewid"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 -------add your RelativeLayout ------
</ScrollView>

ScrollViewFrameLayout,这意味着您应该在其中放置一个包含整个内容的子项进行滚动;这个子本身可能是一个具有复杂对象层次结构的布局管理器。经常使用的子项是垂直方向的LinearLayout,呈现用户可以滚动的顶级项目的垂直数组。

答案 1 :(得分:0)

请使用LinearLayout而不是RelativeLayout来解决您的问题