如何设置ImageButton以匹配不同设备的屏幕?

时间:2014-01-09 10:47:35

标签: android android-layout

我将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,如下所示?

<ImageButton
                android:id="@+id/imageButton1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@android:drawable/btn1" />

提前致谢。

------------------------------- EDIT ------------ ----------------

<LinearLayout
        android:layout_width="wrap_content"
        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/FileButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_alignParentLeft="true"
                android:src="@drawable/file_viewer"/>



            <ImageButton
                android:id="@+id/recordButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_centerInParent="true"
                android:src="@drawable/record" />



             <ImageButton
                android:id="@+id/photo_record_mode"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:layout_alignParentRight="true"
                android:src="@drawable/recordmode"/>



        </RelativeLayout>
    </LinearLayout>

我修改了上面的代码。

我将APP安装到不同尺寸的设备上,适用于4.7英寸和7英寸。

但它似乎使用相同大小的图片。

我从android:background更改为android:src

如下图所示

enter image description here

有没有错误?

2 个答案:

答案 0 :(得分:1)

是的,Android会根据屏幕密度在运行时选择正确的图像资源。但是,您应该将layout_widthlayout_height设置为wrap_content而不是match_parent

答案 1 :(得分:0)

该应用会根据设备规格自动从相应的文件夹中获取资源。其次,即使您的图像视图设置为匹配父级,图像也不会填充父级,因为您已设置src属性而不是背景。如果您希望imageView的图像填充父级,请将图像按钮声明更改为:

    <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:drawable/btn1" />

如果您希望它采用原始尺寸,请按照以下步骤操作:

    <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/btn1" />