android 如何在按钮中设置图像
How to set the image in button in android
我在 android 工作时总是遇到这个问题,那就是在按钮中设置图像。我有一个我想在按钮中设置的图像,所以我有这个按钮图像的多个分辨率用于不同的桶,以支持多个屏幕尺寸。
以下是我的图片,分辨率为85*85
现在,当我想在按钮中设置它时,我的图像有点变形。看起来图像的宽度比图像的高度大,但实际上并非如此。在按钮中设置图像后,让我与您分享图片。此屏幕短片来自 android 三星 galaxy s4 设备,它是 xxhd 设备
现在您可以很容易地看到它看起来有多糟糕。
这就是我在 xml
中的设置方式
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/flip_image"
/>
但是当我在 Imageview 中设置此图像时,一切看起来都和预期的一样好。所以问题不在图像也不在 xml 而是使用 Button 的方式。那么谁能告诉我在 button 或 Imagebutton 中使用图像的最佳方式是什么。
请告诉我为什么当我尝试在按钮中设置图像时它总是发生,而最后当我使用图像视图时我总是得到我想要的结果。
(How ever using Imageview make me loose the touch effect that the
button has naturally and by default.)
**Edit1 ** 这是我在 xml 中使用按钮
的部分
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
android:orientation="vertical"
android:background="@drawable/menu_bg"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:gravity="center"
>
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/flip_image"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_flip_suit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/flip_suit" />
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_change_suit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/change_suit" />
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_share"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:background="@drawable/share_btn" />
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/save_image"
/>
</LinearLayout>
所以任何人都请让我明白我做错了什么或者将 Button 与自定义图像一起使用的最佳方式是什么。 ??
试试这个,
你可以使用
android:drawableLeft="@drawable/ic_launcher"//image for left side in button
android:drawableTop="@drawable/ic_launcher"//image for top side in button
android:drawableBottom="@drawable/ic_launcher"//image for bottom side in button
android:drawableRight="@drawable/ic_launcher"//image for right side in button
你的代码是。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/btn_flip_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/flip_image" />
</RelativeLayout>
使用android:drawableTop
代替android:src
我测试了你的代码,没有问题...
作为你的图片宽度问题,这是由于屏幕分辨率在不同设备上造成的,为此你可以将你的Linear Layout
放在ScrollView
滚动视图之前的代码输出:
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/flip">
</LinearLayout>
</ScrollView>
滚动视图后的输出:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/ic_launcher"/>
</LinearLayout>
您也可以使用
android:drawableBottom ="@mipmap/ic_launcher"
android:drawableTop="@mipmap/ic_launcher"
android:drawableRight="@mipmap/ic_launcher"
您也可以尝试使用 ImageView 而不是 Button
<ImageView
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/flip_image" />
我总是使用背景,因为它不会改变图像尺寸:
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/flip_image" />
你可以这样做:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/your_img" />
在这种方法中,您还可以使用 ImageView
而不是 ImageButton
。
我在 android 工作时总是遇到这个问题,那就是在按钮中设置图像。我有一个我想在按钮中设置的图像,所以我有这个按钮图像的多个分辨率用于不同的桶,以支持多个屏幕尺寸。
以下是我的图片,分辨率为85*85
现在,当我想在按钮中设置它时,我的图像有点变形。看起来图像的宽度比图像的高度大,但实际上并非如此。在按钮中设置图像后,让我与您分享图片。此屏幕短片来自 android 三星 galaxy s4 设备,它是 xxhd 设备
现在您可以很容易地看到它看起来有多糟糕。
这就是我在 xml
中的设置方式<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/flip_image"
/>
但是当我在 Imageview 中设置此图像时,一切看起来都和预期的一样好。所以问题不在图像也不在 xml 而是使用 Button 的方式。那么谁能告诉我在 button 或 Imagebutton 中使用图像的最佳方式是什么。
请告诉我为什么当我尝试在按钮中设置图像时它总是发生,而最后当我使用图像视图时我总是得到我想要的结果。
(How ever using Imageview make me loose the touch effect that the button has naturally and by default.)
**Edit1 ** 这是我在 xml 中使用按钮
的部分<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
android:orientation="vertical"
android:background="@drawable/menu_bg"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:gravity="center"
>
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/flip_image"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_flip_suit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/flip_suit" />
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_change_suit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/change_suit" />
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_share"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:background="@drawable/share_btn" />
<TextView
android:layout_width="match_parent"
android:layout_height="5dp"
/>
<Button
android:id="@+id/btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/save_image"
/>
</LinearLayout>
所以任何人都请让我明白我做错了什么或者将 Button 与自定义图像一起使用的最佳方式是什么。 ??
试试这个,
你可以使用
android:drawableLeft="@drawable/ic_launcher"//image for left side in button
android:drawableTop="@drawable/ic_launcher"//image for top side in button
android:drawableBottom="@drawable/ic_launcher"//image for bottom side in button
android:drawableRight="@drawable/ic_launcher"//image for right side in button
你的代码是。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/btn_flip_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/flip_image" />
</RelativeLayout>
使用android:drawableTop
代替android:src
我测试了你的代码,没有问题...
作为你的图片宽度问题,这是由于屏幕分辨率在不同设备上造成的,为此你可以将你的Linear Layout
放在ScrollView
滚动视图之前的代码输出:
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/flip">
</LinearLayout>
</ScrollView>
滚动视图后的输出:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/ic_launcher"/>
</LinearLayout>
您也可以使用
android:drawableBottom ="@mipmap/ic_launcher"
android:drawableTop="@mipmap/ic_launcher"
android:drawableRight="@mipmap/ic_launcher"
您也可以尝试使用 ImageView 而不是 Button
<ImageView
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/flip_image" />
我总是使用背景,因为它不会改变图像尺寸:
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/flip_image" />
你可以这样做:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/your_img" />
在这种方法中,您还可以使用 ImageView
而不是 ImageButton
。