保持按钮相对于背景图像放置

时间:2017-07-15 04:35:49

标签: android xml android-layout

我试图为Android制作一个Flashlight应用程序(绝对是初学者)

这个概念是让IronMan的胸灯成为闪光灯UI的切换按钮。

我将钢铁侠设为背景ImageView。并将胸部光照片设置为按钮的图像src。

问题在于,在不同的屏幕尺寸中,按钮的对齐方式会发生变化,如下面的屏幕截图所示。 这就是它的样子:

enter image description here

屏幕尺寸改变时按钮移位:

enter image description here

如果有人可以帮助我解决这个问题,那就太棒了。

我的XML代码,如果有任何帮助:

     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    tools:context="example.flash.flash">

    <!-- view for AdMob Interstitial Ad -->

    <TextView
        android:id="@+id/app_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="@string/interstitial_ad_sample"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/level"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/app_title"
        android:layout_centerHorizontal="true"
        android:text="@string/start_level"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/next_level_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/next_level" />
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/iron"
        android:id="@+id/imageView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <ImageButton
        android:id="@+id/imageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/colorBackground"
        android:src="@drawable/onn"
        android:scaleType="fitCenter"
        android:layout_marginBottom="57dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_home_footer"></com.google.android.gms.ads.AdView>

</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

问题是您正在设计特定于一个设备/屏幕的布局。

来自文档 -

  

Android支持多种允许使用的配置限定符   控制系统如何根据选择您的替代资源   当前设备屏幕的特征。配置   qualifier是一个字符串,您可以将其附加到资源目录中   您的Android项目并指定其配置   里面的资源都是设计好的。

请参阅Different values folders in android,了解如何根据不同的屏幕制作不同的值/ dimens.xml。

因此,请创建不同的值文件夹并检查文档 - link

答案 1 :(得分:0)

您使用的是哪种父版面? 如果是RelativeLayout,则必须相对于彼此设置按钮