我将48*48
,72*72
和96*96
的图片分别添加到mdpi
,ldpi
和hdpi
。
并在AndroidManifest.xml
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
第一个问题:
当我执行上述操作时,应用程序会自动捕获合适的图片吗?
第二个问题:
但是如何在xml
文件中设置按钮?
如果应用会自行捕捉合适的图片,那么我将width
和height
设置为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上的灰色部分? 有没有错误?
答案 0 :(得分:5)
你混淆了两个不同的概念。一个是屏幕的像素密度或DPI,另一个是屏幕的大小。一般来说,手机被认为是正常尺寸,平板电脑被认为是大尺寸。
我建议您仔细阅读整篇文章,其中重点介绍了支持不同屏幕尺寸和屏幕密度的许多重要观点:
http://developer.android.com/guide/practices/screens_support.html
一般而言,Android允许用户为不同的设备配置定义不同的资源(包括屏幕尺寸和屏幕密度等)。这是通过使用(资源/配置)限定符来完成的。这些是由hiphen定义的,然后是/ res /目录中某些文件夹的限定符名称。
例如,如果要为不同的屏幕密度定义不同的图像,可以为每个支持的屏幕密度创建一个新的可绘制目录,并在每个屏幕中放入适当的资源。
然后,当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” 它肯定会为你工作