我必须以全屏模式开发应用程序,现在我有一个公式 一些textEdits和一些按钮。如果弹出键盘,它会隐藏 两个按钮,所以我将所有内容放入滚动视图:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"
tools:context="controller.RegsiterActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/register_textview_firstname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:singleLine="true"
android:text="@string/text_firstname" />
<EditText
android:id="@+id/register_textedit_firstname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:inputType="text" />
<TextView
android:id="@+id/register_textview_lastname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:singleLine="true"
android:text="@string/text_lastname" />
<EditText
android:id="@+id/register_textedit_lastname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:inputType="text" />
<TextView
android:id="@+id/register_textview_email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:singleLine="true"
android:text="@string/text_email" />
<EditText
android:id="@+id/register_textedit_email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:inputType="textEmailAddress" />
<TextView
android:id="@+id/register_text_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:singleLine="true"
android:text="@string/text_password" />
<EditText
android:id="@+id/register_textedit_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:inputType="text" />
<Button
android:id="@+id/register_button_register"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_register" />
<Button
android:id="@+id/register_button_cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_cancel" />
</LinearLayout>
</ScrollView>
正如我所说,我必须全屏运行我的应用程序:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
但是当我现在运行我的应用程序时,没有出现scrollView,也没有滚动工作。
如何让scrollView工作?
答案 0 :(得分:3)
您应该添加到ScrollView
的第一个属性是:
android:fillViewport="true"
设置为true时,如果需要,此属性会使滚动视图的子项扩展到ScrollView的高度。当孩子高于ScrollView时,该属性无效。
另外,将fill_parent
布局维度更改为match_parent
,因为fill_parent
已被弃用,您可以摆脱任何恼人的警告。
此外,将layout_height
的{{1}}属性更改为LinearLayout
,以便在屏幕配置更改(例如拉起键盘)的同时调整match_parent
。 / p>
此外,与@karvoynistas建议类似,您应该查看windowSoftInputMode
属性。
您可以将此属性添加到您的活动中:
ScrollView
这种效果是(根据Android docs
):
确保系统将布局调整到可用空间 - 这可确保您可以访问所有布局内容(即使可能需要滚动)
将<activity
android:windowSoftInputMode="stateVisible|adjustResize"
...>
<!-- ... -->
</activity>
值添加到adjustPan
属性可能会有效但不完全符合您的要求,因为它可能会导致一些异常的影响(请参见下文)。
Android Docs比较两个值:
<强> adjustResize 强>
活动的主窗口始终调整大小,以便为屏幕上的软键盘腾出空间。
<强> adjustPan 强>
活动的主窗口未调整大小以便为软键盘腾出空间。相反,窗口的内容会自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容。这通常不如调整大小,因为用户可能需要关闭软键盘才能进入并与窗口的模糊部分进行交互。
答案 1 :(得分:0)
如果在键盘出现之前定位没问题,则无需为此放置scrollView。 要避免键盘滚动问题,您只需在清单文件中设置以下特定活动声明:
android:windowSoftInputMode="adjustPan"
答案 2 :(得分:0)
在应用程序的清单文件中,添加到您想要以下行的<activity/>
:
android:windowSoftInputMode="stateAlwaysHidden|adjustResize|adjustPan"
此link说明了同样的问题。