ImageView顶部的精确视图位置 - android

时间:2016-09-14 23:37:57

标签: android

我试图通过在其上面设置一些不可见的图像按钮来制作可交互的imageView,然后用户可以点击图像的不同部分并用它做事,问题是我需要这个图像按钮是在与图像视图相关的非常精确的位置,如果手机尺寸变化甚至一点点,图像按钮将离开我希望它们的位置。

图片视图所在的xml:

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".fragments.Offroad18nitro4wdbuggy_frontFragment">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="OffRoad 1/8 nitro 4WD buggy front" /> <!-- Here just to show the programmer which fragment is showing -->

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:layout_centerHorizontal="true">
    <ImageView
        android:id="@+id/ivLosi4_offroad18nitro4wdbuggy_front"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        android:src="@drawable/losi4_18scale_front"/>

    <ImageButton
        android:id="@+id/ibTest"
        android:layout_width="50dp"
        android:layout_height="41dp"
        android:alpha="0"
        android:background="@color/colorGreen"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="40dp"
        android:layout_marginTop="5dp"/>

</RelativeLayout>

正如您在第二个屏幕截图中看到的那样,图像按钮不合适,我的手机是三星Galaxy S6。

Screenshot of the image button in the exact position i want it to be

Screenshot of the app being emulated to my phone

1 个答案:

答案 0 :(得分:0)

我以前处理过这个问题。我设法完成的解决方法是将屏幕划分为几个子布局,使其看起来像布局网格。首先将屏幕在中心点分成两半,然后在顶部和底部布局的中心放置一个没有尺寸的空文本视图,这样您就可以将这些布局分成四个。然后为那四个人做同样的事情,如果你不得不创造十六个。然后将图像按钮放在两侧或附加到这些布局中包含所需区域的中心点。

重点是创建一个相对于屏幕中心固定的网格。这样,如果屏幕尺寸发生变化,则网格和连接到它的按钮将相应调整。它不是一个完美的解决方案,但它符合我的目的。以下是我使用此策略的项目中的示例xml文件的链接:

https://github.com/ribalding/AdventureAdventure/blob/master/app/src/main/res/layout/activity_kitchen.xml