如何对齐多个屏幕背景图像对应的按钮?

时间:2016-05-23 07:02:34

标签: android xml android-layout android-studio

我是这个论坛的新手,在开发应用程序时遇到的问题确实需要帮助。

这是我用作背景的图像(我在xml中将其命名为SampleBG): https://i.gyazo.com/946507c2690c8170b54a1ace752906bd.png

基本上,这就是我希望我的设计看起来像: https://i.gyazo.com/896e29846dfd9e4bc9ab15ca39f9a796.png

对于较小的设备,它会自动调整大小,如下所示: [i.gyazo.com/f4278339cc8f246187c011474796a12c.png]

当我切换到平板电脑设备时,它会自动显示如下: [i.gyazo.com/1b0e233a0b1731148664e0ac78a05f08.png]

以上就是我想要它的样子。所有尺寸的木质标志都处于同一位置......

但问题是: 我希望木质标牌可以点击,因为它们是按钮。

所以,我尝试使用按钮小部件并使其透明并将其放在木质标牌上......它可以工作,但它只适用于我为其设计的特定尺寸(为Nexus 5设计特定的) ....但是,当我切换到Nexus One布局或Nexus 9布局等时,按钮没有正确放置在木质标牌上,因此无效。

我想要一种方法,使木制标牌可以点击,并且按钮可以固定所有设备尺寸/等标志,同时也是。

我更喜欢xml解决方案,但程序化解决方案也很好。

这是现在的布局代码,它现在只使用背景图像....

`<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/sampleBG">

</RelativeLayout>`

注意: 我尝试过仅使用门图像作为背景,然后使用ImageButton小部件手动添加木质标志,但木质标志的位置不同,不同的屏幕看起来很奇怪,所以我用背景固定木质标志(在Photoshop中)..现在我只想让这些标志可以点击。

3 个答案:

答案 0 :(得分:0)

木制标志不应出现在背景图像上。

相反,制作一个真实的背景图像(即只有“门”背景)并用符号制作单独的图像。 然后使用这些图像构建按钮。

编辑:我确实读过您关于您尝试过的事实的说明,但您应该明确地采用这种方式。另一个优点是,您可以使用“onPress”状态轻松地使按钮对用户点击作出反应,这对于单个背景图像来说是不可能的(或者至少是困难和丑陋的)。

答案 1 :(得分:0)

这是您可以使用的示例代码,以实现此目的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@mipmap/ic_launcher"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.test.androidtestapp.MainActivity">

    <ImageButton
        android:id="@+id/equationsButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/equationsOfTheWeekButton"
        android:layout_centerInParent="true"
        android:layout_margin="20dp"
        android:background="@mipmap/ic_launcher"
        android:contentDescription="Equations Button"
        android:onClick="equationsButtonClick" />

    <ImageButton
        android:id="@+id/equationsOfTheWeekButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="20dp"
        android:background="@mipmap/ic_launcher"
        android:contentDescription="Equations Of The Week Button"
        android:onClick="equationsOfTheWeekButtonClick" />

    <ImageButton
        android:id="@+id/settingsButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/equationsOfTheWeekButton"
        android:layout_centerInParent="true"
        android:layout_margin="20dp"
        android:background="@mipmap/ic_launcher"
        android:contentDescription="Settings Button"
        android:onClick="SettingsButtonClick" />
</RelativeLayout>

您需要对图片进行切片,然后只需更改上面代码中的background属性即可。实现这一点后,您可以将背景更改为选择器,您可以根据不同的状态更改图像 - &gt;什么时候点击,集中,正常;这将使它更加用户友好。

答案 2 :(得分:0)

您可以将想要成为按钮的木制照片分开,并将它们作为按钮的背景。例如,您将木制照片命名为“wood1.png”,“wood2.png”和“wood3.png”,通过此示例代码,您可以将它们设置为按钮的背景图像:

<ImageButton
   android:id="@+id/button1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/wood1"
  />

或者您可以使用自己描述的解决方案设计应用,但是您应该针对不同尺寸的设备通过不同的布局创建应用设计: 布局大
布局小
布局正常
布局XLARGE
布局xxlarge

您可以在Android应用中搜索autoLayout设计并更好地找到您的解决方案..