【问题标题】:drawing button in absulote position android在绝对位置android中绘制按钮
【发布时间】:2015-02-28 17:11:23
【问题描述】:

我正在尝试制作带有按钮的室内地图。我设计了地图,我想把按钮放在上面,如图所示:

所以当用户单击按钮时,我将转到另一个活动。

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

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

【问题讨论】:

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


    【解决方案1】:

    在我看来,为这些按钮使用 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);
    

    【讨论】:

    • 我换了图片,现在中间的按钮,不完全在中间,应该在两行的交点上,所以不能用百分比来表示,可能需要画上画布
    • @MBH 您可能还需要以百分比值定位这些行,因此您现在可以对所有元素使用百分比位置。另请注意,所有绝对位置都可以除以框架宽度和高度以百分比值表示。
    【解决方案2】:

    您可以使用布局边距(左、右、上、下)或使用绝对布局(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

    【讨论】:

    • 它不适用于我的情况,因为按钮是根据图片内矩形的线条放置的
    【解决方案3】:

    这是打开新活动的代码:

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

    startActivity(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"
    />
    

    【讨论】:

    • 我的问题不是关于如何开始另一个活动,而是关于如何将按钮准确地放置在图像视图或位图上我想要的位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多