在绝对位置绘制按钮 android
drawing button in absulote position android
我正在尝试做一个室内地图,上面有按钮。我设计了地图,我想把按钮放在上面,如图所示:
所以当用户单击按钮时,我将转到另一个 activity。
我的问题是如何将按钮放在那些绝对位置并让它适用于所有屏幕布局?
我不知道从哪里开始,只要一个想法或建议就可以挽救我的一天。 :)
您可以使用布局边距(左、右、上、下)或使用绝对布局(http://developer.android.com/reference/android/widget/AbsoluteLayout.html)来设置按钮位置。
示例:
http://sampleprogramz.com/android/absolutelayout.php
同时为了保持按钮在其他分辨率下的位置,请使用 dip/dp 单位而不是像素。
检查这个文档,
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
这是打开新代码的代码 activity:
public void onclick(){intent i = new intent(MainActivity.this,activity.class);
开始活动(i)}
这是按钮的代码:
<Button
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:onClick="onclick"
/>
在我看来,为这些按钮使用 absolute 位置不是一个好的做法,因为处理不同的屏幕尺寸真的很困难。另一方面,在我看来,使用 percentage 位置可能是更好的解决方案。例如:
按钮#1:
- 最高:20%
- 剩下:35%
按钮#2
- 顶部:0%
- 剩下:80%
如果您同意这种方式,您可以从 FrameLayout
开始,然后使用 LayoutParams
为按钮应用左边距和上边距。例如,对于按钮 #1,您可以这样写:
int frameWidth = frameLayout.getWidth();
int frameHeight = frameLayout.getHeight();
Button button = new Button(context);
FrameLayout.LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
p.leftMargin = frameWidth * (percentageLeft / 100);
p.topMargin = frameHeight * (percentageTop / 100);
button.setLayoutParams(params);
frameLayout.addView(button, p);
我正在尝试做一个室内地图,上面有按钮。我设计了地图,我想把按钮放在上面,如图所示:
所以当用户单击按钮时,我将转到另一个 activity。
我的问题是如何将按钮放在那些绝对位置并让它适用于所有屏幕布局?
我不知道从哪里开始,只要一个想法或建议就可以挽救我的一天。 :)
您可以使用布局边距(左、右、上、下)或使用绝对布局(http://developer.android.com/reference/android/widget/AbsoluteLayout.html)来设置按钮位置。
示例: http://sampleprogramz.com/android/absolutelayout.php
同时为了保持按钮在其他分辨率下的位置,请使用 dip/dp 单位而不是像素。 检查这个文档, http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
这是打开新代码的代码 activity:
public void onclick(){intent i = new intent(MainActivity.this,activity.class);
开始活动(i)}
这是按钮的代码:
<Button
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:onClick="onclick"
/>
在我看来,为这些按钮使用 absolute 位置不是一个好的做法,因为处理不同的屏幕尺寸真的很困难。另一方面,在我看来,使用 percentage 位置可能是更好的解决方案。例如:
按钮#1:
- 最高:20%
- 剩下:35%
按钮#2
- 顶部:0%
- 剩下:80%
如果您同意这种方式,您可以从 FrameLayout
开始,然后使用 LayoutParams
为按钮应用左边距和上边距。例如,对于按钮 #1,您可以这样写:
int frameWidth = frameLayout.getWidth();
int frameHeight = frameLayout.getHeight();
Button button = new Button(context);
FrameLayout.LayoutParams p = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
p.leftMargin = frameWidth * (percentageLeft / 100);
p.topMargin = frameHeight * (percentageTop / 100);
button.setLayoutParams(params);
frameLayout.addView(button, p);