在Android中,我重现了以下布局:
这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#94F734"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:layout_marginLeft="48dp"
android:padding="0dp">
<include layout="@layout/header"/>
</LinearLayout>
<RelativeLayout
android:id="@+id/body"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="48dp"
android:layout_marginRight="48dp"
android:layout_marginBottom="48dp"
android:paddingTop="96dp"
android:background="#463779B3"
android:visibility="visible">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="28dp"
android:text="title"
android:layout_above="@+id/code"
android:layout_centerHorizontal="true"
android:layout_marginBottom="48dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:textColor="#000000"/>
<EditText
android:id="@+id/code"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Insert here "
android:background="@drawable/back_item_edit"
android:textColor="#FFFFFF"
android:layout_centerVertical="true"
android:layout_marginLeft="36dp"
android:layout_marginRight="36dp">
<requestFocus />
</EditText>
<Button
android:id="@+id/prova"
android:layout_below="@id/code"
style="@style/initialButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="26dp"
android:text="Connect"
android:textColor="#000000"
android:layout_alignLeft="@id/code"
android:layout_alignRight="@id/code"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:visibility="visible"/>
</RelativeLayout>
</LinearLayout>
但是当我点击&#34;在这里插入&#34;出现一个问题:布局未正确调整大小,并且不适合小屏幕。
我想使用滚动视图,但我不知道如何使用它。
当键盘出现时,我会显示:
有没有办法解决我的问题?
答案 0 :(得分:2)
首先,使用“dpi”指定许多参数,例如:
android:layout_marginTop="48dp"
这不适用于动态调整大部分内容。无论屏幕上其他元素的大小如何,您都要求高度为特定高度。
要解决此问题,首先需要远离绝对测量,并开始使用运行时测量。通常,您可以简单地使用“hdpi”,“xhdpi”等文件夹来管理它,但使用键盘的布局是一种动态测量(在运行时)。
您可以使用加权LinearLayout
等XML提示根据可用尺寸调整到屏幕。您还可以使用Java代码来更改元素的大小。但是你不能指望屏幕会显示大于可用空间的元素(这是它现在遇到的问题)。此外,您还需要确定元素将如何“挤压”在一起。
编辑:
要根据屏幕大小/密度使不同的布局具有不同的边距等,您应该查看每个屏幕密度的文件夹(例如,“layout-xhdpi”的文件夹)。
以下是文档:http://developer.android.com/guide/practices/screens_support.html
包括使用“dimens”文件夹,例如:
Different values folders in android
因此,您有很多处理动态屏幕尺寸的选项。但也许对许多情况(比如你的情况)来说“最简单”就是使用displayMetrics
并相应地调整你的元素:
getting the screen density programmatically in android?
您可以测量,调整大小等。每个元素都有不同的LayoutParams
或其他属性,允许您以编程方式更改它们。您可能需要搜索要更改的特定内容。
答案 1 :(得分:1)
您可以在清单文件中将此属性用于您的活动windowSoftInputMode。