在android中工作时我总是遇到这个问题,那就是在按钮中设置图像。我有一个图像,我想在按钮中设置,所以我有不同的桶的这个按钮图像的多个分辨率,以支持多种屏幕尺寸。
现在,当我想在按钮中设置它时,我稍微有了图像螺丝。似乎宽度上的图像比高度中的图像大,而实际上并不是这样。让我在按钮中设置图像后分享图片。这个屏幕短片是android samsung 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的方式。那么任何人都可以告诉我在按钮或图像按钮中使用图像的最佳方式是什么。
请告诉我为什么它一直发生在我尝试按钮设置图像时,而最后当我使用imageview时,我总能得到我想要的结果。
(如何使用Imageview让我失去了触控效果 按钮自然而且默认情况下。)
** 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与自定义图像的最佳方式。 ??
答案 0 :(得分:1)
我已经测试了你的代码,它没有问题......
由于您的图片宽度问题,这是由于不同设备上的屏幕分辨率,因此您可以将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>
滚动视图后的输出:
答案 1 :(得分:1)
你可以这样做:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:src="@drawable/your_img" />
在这种方法中,您还可以使用ImageView
代替ImageButton
。
答案 2 :(得分:0)
试试这个,
你可以使用
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>
答案 3 :(得分:0)
使用android:drawableTop
代替android:src
答案 4 :(得分:0)
<?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" />
答案 5 :(得分:0)
我总是使用背景,因为它不会改变图像尺寸:
<Button
android:id="@+id/btn_flip_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/flip_image" />