我正在编写Android代码大约2个月。 现在有第一点我被困了。
我认为使用dp来表示不同分辨率下不同尺寸的结果对象。
在具体项目中,我有一个尺寸为imageview的图像视图:
width: wrap_content
height: 250dp
在我的Galaxy S4上,完整的布局看起来很好,但在我的Galaxy S2上ImageView
具有相同的尺寸,并且布局不适合屏幕。
先谢谢
马库斯
编辑:我在drawable文件夹中只有一个版本的图片。
我的布局如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main" tools:context=".MainActivity"
android:background="@drawable/curtain2">
<ImageView
android:layout_width="wrap_content"
android:layout_height="250dp"
android:id="@+id/ValuesImageView"
android:scaleType="fitXY"
android:src="@drawable/overview_values2"
android:layout_below="@+id/ValuesTextView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/Text_Values"
android:id="@+id/ValuesTextView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textColor="@color/colorText"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/Text_Indipendence"
android:id="@+id/IndipendenceTextView"
android:layout_below="@+id/ValuesImageView"
android:layout_centerHorizontal="true"
android:textColor="@color/colorText"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:text="@string/Text_Choose"
android:id="@+id/ChooseTextView"
android:layout_below="@+id/IndipendenceTextView"
android:layout_centerHorizontal="true"
android:layout_marginTop="28dp"
android:gravity="center"
android:textColor="@color/colorText"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/Text_Start"
android:id="@+id/StartTextView"
android:gravity="center"
android:textColor="@color/colorText"
android:layout_below="@+id/ChooseTextView"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="@string/Text_Button_Start"
android:id="@+id/StartButton"
android:layout_marginTop="43dp"
style="@style/btnStyleBlackpearl"
android:layout_below="@+id/StartTextView"
android:layout_centerHorizontal="true" />
</RelativeLayout>
正确调整背景的可绘制文件。
我是否必须为每个分辨率添加图像(mdpi,hdpi ...)?
是否有工具将图像转换为不同的分辨率?
我希望值ImageView
也可以在较小的显示器上调整大小,但如果我比较两部手机的显示,则高度似乎固定为250dp。
对于这个有争议的答案感到抱歉,id没想到答案很快。
+1为此:)
答案 0 :(得分:0)
您应该按如下方式创建资源目录:layout-large和layout-xlarge。然后在这些目录中,您应该将相同的xml文件(具有相同的名称)放在布局目录中。在大型和xlarge目录中的xml中,您可以将图像和所有其他元素的大小调整为更大的屏幕(例如,放置相同的图像但分辨率更高)。
来自android开发人员:您可以用来提供特定于大小的资源的配置限定符是small,normal,large和xlarge。(如果你不创建小的,默认布局目录将用于所有小于大的屏幕尺寸。
我认为小到4英寸屏幕,正常到6,大到8或9,xlarge是最大尺寸。 您可以使用IDE中的预览功能测试所有类型的手机。
320dp:典型的手机屏幕(240x320 ldpi,320x480 mdpi,480x800 hdpi等)。
480dp:像Streak(480x800 mdpi)这样的tweener平板电脑。
600dp:7“片剂(600x1024 mdpi)。
720dp:10英寸平板电脑(720x1280 mdpi,800x1280 mdpi等)。
您可以将其与我上面给出的适应症进行比较。
答案 1 :(得分:0)
感谢Jey10让我走向了正确的方向。
以下解决了我的问题:
我添加了以下布局文件夹:
transitive=true
布局小,布局正常......出现了问题,因为两部手机都被声明为具有不同设计的布局设备。
所以给布局文件夹提供desityreference让android选择正确的布局。
感谢你的帮助和对不起的第一篇文章感到抱歉,我保证会提高自己。