我正在尝试实现一个登录视图,其中多个EditTexts和一个徽标显示在屏幕上,底部有一个ButtonBar,如下所示:
alt text http://russellhaering.com/media/addAccount.png
问题是在非常小的屏幕上,特别是当它们侧向旋转时,整个主视图都不适合屏幕。
我目前有
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#234C59" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="5dip"
android:paddingLeft="15dip"
android:paddingRight="15dip"
android:orientation="vertical" >
<ImageView
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:layout_centerHorizontal="true"
android:src="@drawable/logo" />
<EditText
android:id="@+id/input_email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:inputType="textEmailAddress"
android:singleLine="true"
android:hint="Username or email" />
<EditText
android:id="@+id/input_password"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop=""
android:inputType="textPassword"
android:singleLine="true"
android:hint="Password" />
</LinearLayout>
<LinearLayout
android:id="@+id/buttonbar_login"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
style="@android:style/ButtonBar" >
<Button
android:id="@+id/button_signup"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Sign Up" />
<Button
android:id="@+id/button_login"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Log In" />
</LinearLayout>
</RelativeLayout>
我已经尝试将第一个LinnearLayout封装在ScrollView中,如下所示:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Linear Layout Here -->
</ScrollView>
但这引入了两个问题:
即使在数据不适合的屏幕上,ScrollView也不会滚动
ButtonBar浮动在屏幕键盘的顶部,当键盘出现时,屏幕更加模糊。
当我在ScrollView中有按钮时,一切都很好用,但是现在我把它们放在ButtonBar中,我在解决这个问题上遇到了很多麻烦。
答案 0 :(得分:15)
事实证明,该解决方案需要两个步骤:
无法滚动是ScrollView位于Button Bar后面的结果。为了解决这个问题,我在Button Bar下面定义了ScrollView,然后使用android:layout_above="@id/buttonbar_login"
强制ScrollView完全驻留在Button Bar上。
显然,当屏幕键盘打开时,如果你有一个ScrollView,它将被调整大小,允许按钮栏随键盘浮动。为了解决这个问题,我修改了清单并添加了android:windowSoftInputMode =“adjustPan”以防止ScrollView调整大小。
答案 1 :(得分:0)
如果您的用例支持横向隐藏按钮栏,则可以选中Resources.getSystem().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
并将按钮栏设置为View.GONE
。
您可能还需要在清单文件中的android:windowSoftInputMode="adjustResize"
上设置<activity>
。当根布局为adjustResize
(iirc)时,Android只会自动将其放入ScrollView
。