设置不同大小的设备的图像按钮不起作用

时间:2014-01-10 02:39:39

标签: android image imagebutton

我将48*4872*7296*96的图片分别添加到mdpildpihdpi

并在AndroidManifest.xml

中添加以下代码
<supports-screens 
             android:largeScreens="true"   
             android:normalScreens="true"  
             android:smallScreens="true"   
             android:anyDensity="true"/> 

第一个问题:

当我执行上述操作时,应用程序会自动捕获合适的图片吗?

第二个问题:

但是如何在xml文件中设置按钮?

如果应用会自行捕捉合适的图片,那么我将widthheight设置为match_parent,如下所示?

<LinearLayout
    android:id="@+id/ImageBtulayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical"
    android:background="#000000"
     >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageButton
            android:id="@+id/BackButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_gravity="center_vertical"
            android:background="@drawable/back"/>


        <ImageButton
            android:id="@+id/recordButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_gravity="center_vertical"
            android:background="@drawable/no_delete" />

         <ImageButton
            android:id="@+id/download_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_gravity="center_vertical"
            android:background="@drawable/download"/>


    </RelativeLayout>
</LinearLayout>

我修改了上面的代码。

我将APP安装到尺寸为4.7英寸的设备上。

但是图标看起来太小了。

如下图所示

enter image description here

如何删除imageButton上的灰色部分? 有没有错误?

3 个答案:

答案 0 :(得分:5)

你混淆了两个不同的概念。一个是屏幕的像素密度或DPI,另一个是屏幕的大小。一般来说,手机被认为是正常尺寸,平板电脑被认为是大尺寸。

我建议您仔细阅读整篇文章,其中重点介绍了支持不同屏幕尺寸和屏幕密度的许多重要观点:

http://developer.android.com/guide/practices/screens_support.html

一般而言,Android允许用户为不同的设备配置定义不同的资源(包括屏幕尺寸和屏幕密度等)。这是通过使用(资源/配置)限定符来完成的。这些是由hiphen定义的,然后是/ res /目录中某些文件夹的限定符名称。

例如,如果要为不同的屏幕密度定义不同的图像,可以为每个支持的屏幕密度创建一个新的可绘制目录,并在每个屏幕中放入适当的资源。

  • / RES /抽拉-MDPI /
  • / RES /抽拉-LDPI /
  • / RES /抽拉-HDPI /

然后,当Android去寻找资源时,它将首先查找与设备的屏幕密度限定符匹配的目录,并从那里获取资源。资源将共享相同的名称,但将位于不同的文件夹中,这允许您定义不同的资源,但也允许Android将它们解析为不同的配置。

那么让我们来看看你的问题: 当我执行上述操作时,应用会自动捕捉合适的图片吗? 如上所述,只要您使用适当的限定符排列了yor资源,那么是的,Android将能够正确解析它们。但请注意,这与清单中的标记无关。

但是如何在xml文件中设置Button? 您当前的XML设置是正确的。

如果app会自动捕获合适的图片,那么我将宽度和高度设置为match_parent,如下面的代码? 将宽度和高度设置为match_parent将使视图的宽度和高度与父布局相同,这是不正确的。您希望宽度和高度包装视图的内部内容,因此wrap_content是正确的。

编辑:关于删除边框的问题,如果你想使用ImageButtons,那么文档(第一段)建议将android:background属性设置为透明。

android:background="#00000000"

您可能还想尝试将填充设置为

android:padding="0dp"

http://developer.android.com/reference/android/widget/ImageButton.html

答案 1 :(得分:1)

回答第一个问题:

Android系统会根据设备屏幕密度选择可绘制文件夹中的图像。

回答第二个问题:

如果是前面的代码,你将ImageButton的高度和宽度设置为wrap_content,那么ImageButton的宽度和高度将作为drawable文件夹中捕获图像的大小,所以如果你在设备上运行hdpi然后图像尺寸(72 * 72)和ImageButton尺寸也是(72 * 72)px。

答案 2 :(得分:1)

在图片按钮设置Android:src =“@ drawable / your image” 并设置android:background =“@ null” 它肯定会为你工作