0

可能重复:
如何保持 android 中图像按钮的纵横比?

我有 5 个方形骰子作为图像按钮排列在我的布局底部附近。我希望它们占据布局的整个宽度,但我似乎无法让它们在占据整个宽度的同时正确保持该纵横比。目前我的代码如下所示:

 <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:layout_margin="1dp"
        android:layout_gravity="bottom" 
        > 
        <ImageButton
             android:id="@+id/die1" 
             android:layout_width="fill_parent"
             android:layout_height="wrap_content" 
             android:layout_gravity="center"
             android:adjustViewBounds="true"
             android:layout_weight="1"
             android:layout_margin="2dp"
             android:scaleType="centerInside"
             />  
        <ImageButton
             android:id="@+id/die2" 
             android:layout_width="fill_parent"
             android:layout_height="wrap_content" 
             android:layout_gravity="center"
             android:adjustViewBounds="true"
             android:layout_weight="1"
             android:layout_margin="2dp"
             android:scaleType="centerInside"
             /> .....

看起来像这样: 60dp

如果我不包括

android:layout_height="60dp"

然后骰子变得倾斜,看起来像这样:歪斜的

但是,当我尝试在平板设备或高分辨率的设备上显示时,会出现保留“60dp”部分的问题,它最终看起来像这样:

在此处输入图像描述

我哪里错了?!

4

3 回答 3

3

你将不得不做两件事之一:

1) 提供 ldpi、mdpi、hdpi 和 x-hdpi 版本的骰子图像。将它们放在各自的可绘制文件夹中,其余的将由 android 处理。在这里了解如何:http: //developer.android.com/guide/practices/screens_support.html

或者

2)获取屏幕大小并手动设置图像视图大小java。您可以使用以下方法获取屏幕尺寸:

 Display d = ((android.view.WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
 screenWidth = d.getWidth();

剩下的就看你了。祝你好运!

-edit- 设置 ImageView(或 Java 中任何其他视图的大小)

 myHeight = screenSize/5; //These are in pixels not dp's
 myWidth = screenSize/5;
 LinearLayout.LayoutParams myLayoutParams = 
               new LinearLayout.LayoutParams(myWidth,myHeight);
 myView.setLayoutParams(myLayoutParams);

希望一切顺利。

于 2011-11-01T02:47:10.260 回答
0

尝试

 android:layout_height="wrap_content"

&

<LinearLayout>属性android:layout_height="60dp"替换为android:layout_height="wrap_content"

于 2011-11-01T05:26:23.087 回答
0

将 ImageButtons 的宽度设置为fill_parent并使用 scaletypefitStart用于紧靠左边距的图像和右边的图像fitEnd。至少就您的示例图像而言,应该做到这一点。如果图像的比例宽度超过屏幕宽度,您可能会遇到一些间距问题,但它应该适合您。

于 2011-11-04T13:46:54.363 回答