我尝试使用此布局参数定位按钮:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Butt1"
android:id="@+id/b1"
android:rotation="-9"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="205dp"
我的想法是让按钮透明,并保留背景图像的视觉提示,让用户知道那里有一个按钮。
我已经通过手动定位和调整按钮大小在我的设备上工作,在我的设备上使用保证金顶部205dp我得到了这个:
在另一台设备上,按钮未对齐/调整为背景图像:
如何了解如何在任何设备上匹配按钮的位置和大小?
答案 0 :(得分:1)
使用<RelativeLayout>
而不是android:layout_marginTop="205dp"
使用属性android:layout_below
,以便您可以指定按钮后面的人!
实施例
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/reminder" />
<Spinner
android:id="@+id/dates"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/times" />
<Spinner
android:id="@id/times"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_alignParentRight="true" />
<Button
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/times"
android:layout_alignParentRight="true"
android:text="@string/done" />
</RelativeLayout>
Spinner
位于EdiText
之后,而Button
位于第二位Spinner
之后
如果您希望屏幕左侧中心的按钮始终使用此代码。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true">
<Button
android:id="@+id/play"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/score"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@id/play"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/times" />
<Button
android:id="@id/times"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/score"
android:layout_alignParentRight="true" />
<Button
android:id="@+id/players"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/times"
android:layout_alignParentRight="true"
android:text="@string/done" />
</LinearLayout>
</RelativeLayout>
使用像LinearLayout
这样的容器,RelativeLayout
的属性将其放在左侧(或右侧)并居中垂直,以便LinearLayout
内的所有按钮更改位置从所有屏幕维度。
阅读我发布的文档并查看 RelativeLayout参数,以便找到最适合您的解决方案。
<强>意大利语:强>
Credo tu sia italiano,se usilaproprietàandroid:layout_below
dici praticamente che l'elemento con questaproprietàsideve posizionare subito sotto un determinato elemento specificato per ID
Poi se vuoi li spazi l'uno dall'altro con un marginTop
。
Per mantenere il tutto centrato usa un LinearLayout,Consideralo un container che ha来proprietàdelRelativeLayout
quelle di stare a sinistra e al centro della schermata,cosìsiadatta ad ogni schermo。
答案 1 :(得分:1)
查看this库:它定义具有百分比定位/大小调整功能的RelativeLayout
版本。
我想指出的是,使用透明背景并让按钮被窗口的背景图像暗示是“简单”的方式,但这是一种不好的做法。这样你就不会给触摸用户界面的用户提供视觉反馈,你不得不用你的应用程序上传一个大图像,这个图像将被不可避免的工件拉伸,并且不能很好地适应不同的屏幕宽高比。
您应该尝试构建一个UI,其中按钮是一个实际按钮,位于屏幕上。
在您的情况下,这不是一件容易的事,因为您需要不规则形状的按钮彼此重叠(如果您认为它们是矩形的)。因此,您需要以特殊/自定义方式处理触摸。
如果您决定使用其他路线,请查看其他问题和答案:
另一种方法是使用坐标映射图像,就像在HTML地图标记中一样。 This Android库似乎在Android Image Widget中实现了这种确切的行为。