我不是设计师,但最近,我被要求更改我公司应用的登录界面UI。
我有一个设计师的背景图片。此图像是完整的登录屏幕。这意味着它是一个PNG文件,上面有输入框(用户名和密码框)。
当然,即使它看起来像一个完整的登录屏幕,只是把它放在那里将无法工作,因为输入框是假的。
我试图在其上放置EditText
小部件,试图将它放在背景图像上的位置,并将这两个小部件背景设置为无,这样用户就不会看到它。但是,在不同的设备上,它只是显示不正确。有时在“背景输入框”上方,有时在其下方。无论如何,它只是不适合那里。
我想知道是否有办法让我解决这个问题。无论设备如何变化,都让小部件位于背景的正确位置。
现在是我的布局,希望它会有所帮助:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainTableLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/pbackground"
android:stretchColumns="1" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="160dp" >
<EditText
android:id="@+id/txtBxPassword"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:ems="10"
android:gravity="center_vertical|center_horizontal|center"
android:height="33dp"
android:password="true"
android:singleLine="true"
android:width="160dp" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/txtBxUserID"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_above="@+id/txtBxPassword"
android:layout_alignLeft="@+id/txtBxPassword"
android:layout_marginBottom="10dp"
android:ems="10"
android:gravity="center_vertical|center_horizontal|center"
android:height="33dp"
android:singleLine="true"
android:width="160dp" />
</RelativeLayout>
</RelativeLayout>
以下是我从Eclipse捕获的图像,您可以看到我在背景上的输入框位置放置了两个EditText
框。但在真实设备上,它们将被放错地方。
谢谢!
答案 0 :(得分:0)
将linearlayout作为基本布局而不是相对布局... 并使用tablerow布局并将小部件放在其中 明智地使用android:layout_margin和android:layout_width和android:layout_height 正确... 希望它会有所帮助
答案 1 :(得分:0)
您应该让设计师为您提供各个元素的文件 - 例如挂锁&amp;自己头上的图标,以及自己的阴影框。将框转换为Nine-patch并将其设置为合适布局元素的背景可绘制(即每行的容器布局)。
您还希望拥有multiple sizes of each image to support different pixel densities。
如果你不这样做,你总会有一些屏幕看起来很糟糕的设备。