在绝对位置android绘图按钮

时间:2015-02-28 17:11:24

标签: android android-layout android-canvas android-imageview android-button

我正在尝试在门图中做一个按钮。我设计了地图,我想把按钮放在上面,如下图所示:

In door map, with buttons in certain positions

因此,当用户点击按钮时,我将转到另一个活动。

我的问题是如何将按钮放在那些绝对位置并让它适用于所有屏幕rosulotions?

我不知道从哪里开始,只是一个想法或建议可以节省我的一天。 :)

3 个答案:

答案 0 :(得分:1)

您可以使用布局边距(左,右,上,下)设置按钮位置或使用绝对布局(http://developer.android.com/reference/android/widget/AbsoluteLayout.html)。

示例: http://sampleprogramz.com/android/absolutelayout.php

另外,为了保持其他分辨率上的按钮位置,请使用dip / dp单位而不是px。 检查这个文档, http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

答案 1 :(得分:1)

在我看来,对这些按钮使用绝对位置不是一个好习惯,因为处理不同的屏幕尺寸确实很困难。另一方面,在我看来,使用百分比位置可能是更好的解决方案。例如:

按钮#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);

答案 2 :(得分:0)

这是开放新活动的代码:

public void onclick(){intent i = new intent(MainActivity.this,activity.class);

startActivity(ⅰ)}

这是按钮的代码:

<Button
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:onClick="onclick"
/>