【问题标题】:Set the imagebutoon for different size of device does not working为不同尺寸的设备设置图像按钮不起作用
【发布时间】:2014-01-10 02:39:39
【问题描述】:

我将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寸的设备上。

但图标似乎太小了。

如下图所示

如何去除 imageButton 上的灰色部分? 有什么不对吗??

【问题讨论】:

  • 你解决了吗?这是你的图片问题..请在这里发布你的图片。

标签: android image imagebutton


【解决方案1】:

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

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

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

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

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

  • /res/drawable-mdpi/
  • /res/drawable-ldpi/
  • /res/drawable-hdpi/

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

让我们看看你的问题: 进行上述操作时,应用会自行拍摄适合的图片吗? 如上所述,只要您使用适当的限定符安排您的资源,那么是的,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

【讨论】:

  • @ThelT 我已将图片添加到每个支持的屏幕密度的可绘制目录中。但它显示的图片就像图片一样。
  • 当你说灰色时,你是指图片周围的灰色,所有图像周围的深灰色,深灰色周围的浅灰色,还是有背景的区域?我的第一个建议是删除 android:background="#000000" 标签。
  • @MartinWun 我已经用一些建议更新了我的答案。让我们知道这是否回答了您的问题,如果它解决了您的问题,请记住接受答案。万事如意!
【解决方案2】:

第一个问题的答案:

Android系统会根据设备屏幕密度选择drawable文件夹中的图片。

第二个问题的答案:

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

【讨论】:

  • 如何去除imageButton上的灰色部分?
  • 尝试使用ImageButton的imageView instate,并将src属性设置为您要使用的图像(不是背景属性),并将scaleType设置为FITXY。
  • 尽管我同意并且通常使用带有 android:clickable=true 的 ImageView,但他可能出于特定原因想要使用 ImageButton。此外,对于宽度和高度为 wrap_content 的 ImageView,不需要设置 scaleType。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 1970-01-01
    • 2019-07-08
    • 2018-06-11
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    相关资源
    最近更新 更多