填充不同大小的布局 [英] Filling the layout of different size
问题描述
在我的应用我添加一些图片。我使用DP为所有的测量。当我看到在Eclipse提供不同尺寸测试这一点,我可以看到它显示在不同的设备不同。
(参见棒棒糖被填充为不同长度)。
请让我知道避免这种情况,并在所有设备上创建一个类似的外观和感觉。
以下是布局
<?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
机器人:weightSum =15
机器人:方向=垂直><的LinearLayout
机器人:ID =@ + ID / LL0
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_weight =5
机器人:方向=横向> <的LinearLayout
机器人:ID =@ + ID / LL1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =FILL_PARENT
机器人:layout_weight =4
机器人:方向=垂直> <的LinearLayout
机器人:ID =@ + ID / ll1A
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直>
<的ImageButton
机器人:ID =@ + ID / imOption1
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中>
<的LinearLayout
机器人:ID =@ + ID / ll1B
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直>
<的ImageButton
机器人:ID =@ + ID / imOption2
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中> <的LinearLayout
机器人:ID =@ + ID / ll1C
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直> <的ImageButton
机器人:ID =@ + ID / imOption3
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中>
< / LinearLayout中> <的LinearLayout
机器人:ID =@ + ID / [112
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =FILL_PARENT
机器人:layout_weight =4
机器人:方向=垂直> <的LinearLayout
机器人:ID =@ + ID / ll2A
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直>
<的ImageButton
机器人:ID =@ + ID / imOption4
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中>
<的LinearLayout
机器人:ID =@ + ID / ll2B
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直>
<的ImageButton
机器人:ID =@ + ID / imOption5
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中> <的LinearLayout
机器人:ID =@ + ID / ll2C
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直> <的ImageButton
机器人:ID =@ + ID / imOption6
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中>
< / LinearLayout中>
<的LinearLayout
机器人:ID =@ + ID / 113
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =FILL_PARENT
机器人:layout_weight =4
机器人:方向=垂直> <的LinearLayout
机器人:ID =@ + ID / ll3A
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直>
<的ImageButton
机器人:ID =@ + ID / imOption7
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中>
<的LinearLayout
机器人:ID =@ + ID / ll3B
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直>
<的ImageButton
机器人:ID =@ + ID / imOption8
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中> <的LinearLayout
机器人:ID =@ + ID / ll3C
机器人:layout_weight =3
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直> <的ImageButton
机器人:ID =@ + ID / imOption9
机器人:layout_width =90dp
机器人:layout_height =90dp
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中>
< / LinearLayout中> <的LinearLayout
机器人:ID =@ + ID / LL4
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =FILL_PARENT
机器人:layout_weight =3
机器人:weightSum =9
机器人:背景=#FFFF99
机器人:方向=垂直>
<的LinearLayout
机器人:ID =@ + ID / ll4A
机器人:layout_alignParentLeft =真
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=垂直>
< ImageView的
机器人:ID =@ + ID / ivDisplayArea
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:scaleType =centerCrop
机器人:layout_gravity =中心
机器人:背景=@绘制/重复/>
< / LinearLayout中>
< / LinearLayout中>
< / LinearLayout中>
<的LinearLayout
机器人:ID =@ + ID / LL5
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_weight =10
机器人:方向=横向>
<的TextView
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:比重=中心
机器人:背景=#FF6633
机器人:文字=奖励账户
机器人:文字颜色=#FFFFFF
机器人:文字样式=大胆/> <的ImageButton
机器人:ID =@ + ID / bReward1
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =10dp
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward2
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward3
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward4
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward5
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward6
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward7
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward8
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward9
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/> <的ImageButton
机器人:ID =@ + ID / bReward10
机器人:layout_width =30dp
机器人:layout_height =30dp
机器人:layout_gravity =中心
机器人:layout_marginLeft =7DP
机器人:背景=@绘制/棒棒糖/>
< / LinearLayout中>
< / LinearLayout中>
这实际上是正确的行为。 Android的工程,以确保无论图形项目保持屏幕密度或屏幕尺寸相同的物理尺寸。
因此,如果选择了旨在成为一个人的指尖的大小的一个按钮的图形图像,该图形应始终显示完全相同的物理尺寸(即尺寸为英寸),而不管器件特性
如果您preFER用于向以这样的方式进行布局屏幕,它看起来在所有设备上是相同的,并且被标定,因此相同的外观是更大或取决于屏幕尺寸,则有两个方法可以做到这一点:
- 而不是使用的密度无关像素的
浸
(或相当于DP
),
使用的比例无关像素的SIP
(或相当于SP
- 其中规模
与系统字体大小)或像素
(对于
的像素的)来定义您的图形组件尺寸。 - 而是将所有图片到你的RES /绘文件夹中,加
不同大小的图像以相同的文件名的各种
RES /绘-LDPI,RES /绘-MDPI,RES /绘 - 华电国际,而
RES /绘-xhdpi文件夹中。
您将有图像尺寸进行试验,以得到它的权利,但比率定义如下:的启动图标:大小和格式
In my app I am adding some images. I am using dp for all the measurements. When I see test this in different sizes available in eclipse, I could see that it is shown different in different devices.
(see the lollipop is filled for different length).
Please let me know avoid this and to create a similar look-and-feel in all devices
Following is the layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="15"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ll0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="5"
android:orientation="horizontal" >
<LinearLayout
android:id="@+id/ll1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="4"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll1A"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption1"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll1B"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption2"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll1C"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption3"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="4"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll2A"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption4"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll2B"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption5"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll2C"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption6"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="4"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll3A"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption7"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll3B"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption8"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll3C"
android:layout_weight="3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageButton
android:id="@+id/imOption9"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:background="@drawable/repeat"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll4"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="3"
android:weightSum="9"
android:background="#FFFF99"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll4A"
android:layout_alignParentLeft="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/ivDisplayArea"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:layout_gravity="center"
android:background="@drawable/repeat"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="10"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:background="#FF6633"
android:text="Reward Account "
android:textColor="#FFFFFF"
android:textStyle="bold" />
<ImageButton
android:id="@+id/bReward1"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward2"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward3"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward4"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward5"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward6"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward7"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward8"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward9"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
<ImageButton
android:id="@+id/bReward10"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginLeft="7dp"
android:background="@drawable/lollipop" />
</LinearLayout>
</LinearLayout>
This is actually correct behavior. Android works to make sure that the graphics items remain the same physical size regardless of screen density or screen size.
So, if you choose a button graphics image that is intended to be the size of a person's fingertip, that graphic should always be displayed the exact same physical size (i.e. size in inches) regardless of device characteristics.
If you prefer for your screen to be laid out in such a way that it looks the same on all devices, and is scaled so that the same look is bigger or smaller depending on screen size, then there are two ways to do this:
- Instead of using Density-Independent-Pixels "
dip
" (or the equivalent "dp
"), use Scale-Independent-Pixels "sip
" (or the equivalent "sp
" - which scale with system font size) or "px
" (for pixels) to define your graphics component sizes. - Instead of adding all image to your "res/drawable" folder, add different size images with the same filenames to the various "res/drawable-ldpi", "res/drawable-mdpi", "res/drawable-hdpi", and "res/drawable-xhdpi" folders.
You will have to experiment with image sizes to get it right, but the ratios are defined here: Launcher Icons: Size and Format
这篇关于填充不同大小的布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!