当我点击我的编辑文字并且我的键盘出现时,一切似乎都没问题,如下图所示:
但是当它必须缩小一点时,我的图像会调整大小,扩展一个不可见的区域,而我的TextView仍然像开始时一样大,那么我的布局不再适用了:
我尝试为xhdpi分辨率创建新的图像和尺寸,但它没有任何效果
我该如何解决?我怎样才能按比例调整所有内容。 (我已尝试放置一个scrollview,但我的布局中有一个ListView,如下面的代码所示)
<RelativeLayout 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:background="@drawable/login_background"
android:descendantFocusability="beforeDescendants"
android:clickable="true"
android:focusableInTouchMode="true"
tools:context=".LoginActivity"
android:id="@+id/fundoLogin" >
<RelativeLayout
android:id="@+id/relativeLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
<ImageView
android:id="@+id/image_login_fields"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/image_logo"
android:layout_centerHorizontal="true"
android:contentDescription="@string/img_login_fields_desc"
android:src="@drawable/login_fields">
</ImageView>
<ImageView
android:id="@+id/image_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/margin_logo_to_fields"
android:contentDescription="@string/img_logo_desc"
android:src="@drawable/logo" />
<TextView
android:id="@+id/labelLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/image_login_fields"
android:layout_alignLeft="@id/image_login_fields"
android:layout_marginTop="@dimen/margin_top_label_login"
android:layout_marginLeft="@dimen/margin_left_label_login"
android:text="@string/login"
android:textSize="@dimen/login_txt_size"
/>
<EditText
android:id="@+id/txtFieldLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin_left_txt_field_login"
android:layout_alignTop="@id/image_login_fields"
android:layout_toRightOf="@id/labelLogin"
android:layout_alignRight="@id/image_login_fields"
android:layout_marginRight="@dimen/margin_right_txt_field_login"
android:layout_marginTop="@dimen/margin_top_txt_field_login"
android:ems="10"
android:textSize="@dimen/login_txt_size"
android:hint="@string/txtFieldLoginHint"
android:singleLine="true" >
</EditText>
<TextView
android:id="@+id/labelSenha"
android:layout_below="@id/labelLogin"
android:layout_alignLeft="@id/image_login_fields"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_top_label_senha"
android:layout_marginLeft="@dimen/margin_left_label_senha"
android:text="@string/senha"
android:textSize="@dimen/senha_txt_size" />
<EditText
android:id="@+id/txtFieldSenha"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtFieldLogin"
android:layout_alignLeft="@id/txtFieldLogin"
android:layout_alignRight="@id/txtFieldLogin"
android:layout_marginTop="@dimen/margin_top_txt_field_senha"
android:ems="10"
android:hint="@string/txtFieldSenhaHint"
android:singleLine="true"
android:textSize="@dimen/senha_txt_size"></EditText>
<ImageButton
android:id="@+id/btnEntrar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/image_login_fields"
android:layout_alignBottom="@id/image_login_fields"
android:layout_marginRight="@dimen/margin_right_btn_entrar"
android:layout_marginBottom="@dimen/margin_bottom_btn_entrar"
android:background="@drawable/btn_entrar_clicked"
android:contentDescription="@string/btn_entrar_desc"
/>
<ListView
android:id="@+id/listEmails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/image_login_fields"
android:layout_alignRight="@id/image_login_fields"
android:layout_alignLeft="@id/txtFieldLogin"
android:background="@drawable/rounded_corner"
android:visibility="invisible" >
</ListView>
</RelativeLayout>
<Button
android:id="@+id/btnTeste"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:textSize="@dimen/btn_teste_txt_size"
android:layout_marginRight="@dimen/margin_right_btn_teste"
android:layout_marginBottom="@dimen/margin_bottom_btn_teste"
android:text="@string/btnCredenciaisDeTesteTxt"
android:textColor="@color/white" />
</RelativeLayout>
答案 0 :(得分:3)
您要找的是android:windowSoftInputMode
中的AndroidManifest
属性。这可以控制屏幕对所显示键盘的响应方式。现在它似乎正在使用adjustResize
,并且您希望adjustPan
所以在清单中的Activity
声明中添加:
<activity android:windowSoftInputMode="adjustPan"
您可以在此处详细了解您的选项:
http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft
如果您想要调整屏幕大小,则需要重新考虑布局。
首先,将登录背景作为单独的ImageView的不良形式。由于您希望调整大小,因此应以最小的必要大小为图像创建9补丁。这使容器定义图像的大小,而不是图像本身。
其次,仅将TextViews
和EditText
包裹在RelativeLayout
中,然后将您创建的9补丁作为RelativeLayout
的背景应用。现在,您将始终拥有一个登录框,即使在调整大小时也会按照您设计的方式包装您的视图。