我尝试使用徽标两个编辑文本和登录按钮创建用于登录页面的UI,在手机纵向模式下情况非常好但是当我在横向和平板电脑中检查时,问题就开始了。
我有两个解决方案
1。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelayoutparent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fed2db"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/linearlayout_parents"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/relativelayoutbasic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin20"
android:layout_marginRight="@dimen/margin20"
android:layout_centerInParent="true"
>
<EditText
android:id="@+id/userName"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="demo@rohitpro.com"
android:hint="UserName"
android:drawableStart="@mipmap/ic_launcher"
android:drawablePadding="10dp"
android:background="@null"
android:layout_marginTop="10dp" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#f7f7f7"
android:layout_below="@id/userName"
android:layout_marginTop="10dp" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/view"
android:inputType="textPassword"
android:hint="Password"
android:text="Password@123"
android:drawablePadding="10dp"
android:background="@null"
android:drawableStart="@mipmap/ic_launcher"
android:layout_marginTop="10dp" />
<Button
android:id="@+id/buttonLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/password"
android:background="#f7f7f7"
android:text="Login"
android:textColor="@android:color/black"
android:textAllCaps="false"
android:textStyle="bold"
android:textSize="17sp"
android:layout_marginTop="10dp" />
<Button
android:id="@+id/buttonForgotPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/buttonLogin"
android:layout_marginTop="10dp"
android:text="Forgot Password ?"
android:textColor="@android:color/white"
android:textAllCaps="false"
android:background="@null" />
</RelativeLayout>
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_marginTop="@dimen/margin20"
android:layout_above="@id/relativelayoutbasic"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
</RelativeLayout>
这在纵向模式下效果很好,但是当我们在横向旋转时,它会缩小图像尺寸。
中显示以下示例所以我尝试了下一个解决方案
2
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelayoutparent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#3996db"
android:orientation="vertical"
>
<ScrollView
android:id="@+id/linearlayout_parentscroll"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearlayout_parents"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_marginTop="@dimen/margin20"
android:layout_gravity="center_horizontal"/>
<RelativeLayout
android:id="@+id/relativelayoutbasic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin20"
android:layout_marginRight="@dimen/margin20"
>
<EditText
android:id="@+id/userName"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="demo@rohitpro.com"
android:hint="UserName"
android:drawableStart="@mipmap/ic_launcher"
android:drawablePadding="10dp"
android:background="@null"
android:layout_marginTop="10dp" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#f7f7f7"
android:layout_below="@id/userName"
android:layout_marginTop="10dp" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/view"
android:inputType="textPassword"
android:hint="Password"
android:text="Password@123"
android:drawablePadding="10dp"
android:background="@null"
android:drawableStart="@mipmap/ic_launcher"
android:layout_marginTop="10dp" />
<Button
android:id="@+id/buttonLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/password"
android:background="#f7f7f7"
android:text="Login"
android:textColor="@android:color/black"
android:textAllCaps="false"
android:textStyle="bold"
android:textSize="17sp"
android:layout_marginTop="10dp" />
<Button
android:id="@+id/buttonForgotPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/buttonLogin"
android:layout_marginTop="10dp"
android:text="Forgot Password ?"
android:textColor="@android:color/white"
android:textAllCaps="false"
android:background="@null" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
A。在此解决方案中,我们无法使用属性android:layout_centerInParent =&#34; true&#34; 因为它是相对布局所以我们无法像在解决方案一中那样使登录文本字段居中,这个解决方案在较小的屏幕中看起来很好并且也有滚动但不能在大屏幕上工作,因为它不会出现在中心。
B。我们无法在scrollview中使用相对布局,因为它会造成许多其他复杂情况。
我花了这么多时间,使用了很多堆栈溢出引用,但也没有其他工作。
请提出一些方法来处理它。 提前谢谢......
答案 0 :(得分:1)
此处的问题是您使用宽度/高度为@mipmap/ic_launcher
的{{1}}图片
因此,"wrap_content"
尺寸将基于ImageView
图片尺寸
并且ic_launcher
图像大小在空间中比纵向小
=&GT;你的横向ic_launcher
小于肖像
因此,只需设置ImageView
的宽度,然后您的图像尺寸在纵向和横向中都会相同
ImageView
答案 1 :(得分:1)
在横向模式下打开应用程序时,Android首先检查是否存在特定于横向的任何布局,如果是,则加载它而不是 layouts 文件夹中指定的布局。为此,您需要创建一个新文件夹 res / layout-land ,然后从 布局复制布局此文件夹中的文件夹,然后进行编辑并制作精美的横向布局。
答案 2 :(得分:0)
您可以为平板电脑创建指定的l ayout-land 甚至 layout-sw600dp-land 。