【问题标题】:image not resize in 600dp android device图像无法在 600dp android 设备中调整大小
【发布时间】:2015-07-23 13:21:07
【问题描述】:

您好,我尝试为所有设备分辨率创建主页,为此我使用了 layout-small、layout-normal、layout-large,这对于普通设备是可以的,但是当设备分辨率变高时会出现问题。我张贴了那里发生的事情的一些图片:

具有全高清分辨率的 7 英寸设备:

7英寸设备,480*800分辨率:

您在 FullHD 中看到的按钮无法缩放我现在为它们发布我的 xml: 注意:在全高清中,您可以在绿色标题下的白板上看到 600dpi,这表明它使用 layout-sw600dp,此布局的 xml 代码是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  android:gravity="center_horizontal|bottom" xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/main_logo_back_draw" >

    <FrameLayout 
        android:layout_width="match_parent"
        android:layout_height="110dp"
        android:background="@drawable/title_background_main" >

        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:gravity="center|left"
             >

            <Button
                android:id="@+id/btn_refresh"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="25dp"
                android:background="@drawable/refresh_main_icon" />

            <Button
                android:id="@+id/img_notification"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="20dp"
                android:text=""
                android:textSize="9sp"
                android:gravity="top|right"
                android:background="@drawable/notification_main_icon" />

            <Button
                android:id="@+id/btn_textsize"
                android:layout_width="20dp"
                android:layout_height="15dp"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:layout_marginLeft="20dp"
                android:background="@drawable/fontsize_main_icon" />

        </LinearLayout>

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="25dp"
            android:src="@drawable/logo_main_icon" />

    </FrameLayout>

    <LinearLayout  android:gravity="center_horizontal|bottom"
        android:layout_width="match_parent"
        android:layout_height="5dp"
        android:layout_marginTop="4dp"
        android:orientation="vertical"
        android:background="#c8c8c8"
        android:alpha="0.6" >
    </LinearLayout>

    <LinearLayout  
        android:layout_width="wrap_content"
        android:layout_height="35dp"
        android:layout_marginTop="10dp"
        android:orientation="horizontal"
        android:layout_gravity="center"
        android:gravity="right"
        android:background="@drawable/time_date_main_draw" >

        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_gravity="center"
            android:layout_marginLeft="5dp"
            android:src="@drawable/calender_logo_main_icon" />

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="Date: "
            android:textSize="8sp"
            android:layout_gravity="center" />

        <TextView
            android:id="@+id/btn_date_milady"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="####/##/##"
            android:textSize="8sp" 
            android:layout_gravity="center"/>

        <LinearLayout  
            android:layout_gravity="center"
            android:layout_width="0.5dip"
            android:layout_height="match_parent"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:background="#d7d7d7"  >
        </LinearLayout>

        <TextView
            android:id="@+id/btn_date_shamsi"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="####/##/##"
            android:textSize="8sp" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="600dpi "
            android:textColor="#aaaaaa"
            android:textSize="10sp"
            android:layout_marginRight="5dp"
            android:layout_gravity="center" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_gravity="center"
            android:layout_marginRight="5dp"
            android:src="@drawable/calender_logo_main_icon" />

        <LinearLayout  
            android:layout_width="0.5dip"
            android:layout_height="match_parent"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:background="#d7d7d7" >
        </LinearLayout>

        <DigitalClock
            android:id="@+id/digitalClock1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textSize="8sp" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ساعت: "
            android:textColor="#aaaaaa"
            android:textSize="8sp"
            android:layout_marginRight="5dp"
            android:layout_gravity="center" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_gravity="center"
            android:layout_marginRight="3dp"
            android:src="@drawable/clock_logo_main_icon" />

    </LinearLayout>

    <LinearLayout  android:gravity="center_horizontal|bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="2"
        android:background="@drawable/dock_hold_main_icon" >

        <ImageView
            android:id="@+id/btn_oghatshari"
            android:layout_width="200dp"
            android:layout_height="200dp"

            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="fitXY"
            android:paddingBottom="10dp"
            android:src="@drawable/pray_main_icon" />

        <ImageView
            android:id="@+id/btn_abohava"
            android:layout_width="200dp"
            android:layout_height="200dp"

            android:paddingLeft="2dp"
            android:paddingRight="2dp"

            android:scaleType="fitXY"
            android:paddingBottom="10dp"
            android:src="@drawable/air_main_icon" />

        <ImageView
            android:id="@+id/btn_about"
            android:layout_width="200dp"
            android:layout_height="200dp"

            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="fitXY"
            android:paddingBottom="10dp"
            android:src="@drawable/info_main" />

        <ImageView
            android:id="@+id/btn_map"
            android:layout_width="200dp"
            android:layout_height="200dp"

            android:paddingBottom="10dp"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"

            android:scaleType="fitXY"
            android:src="@drawable/map_main_icon" />

    </LinearLayout>

    <LinearLayout  android:gravity="center_horizontal|bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="2"
        android:background="@drawable/dock_hold_main_icon" >

        <ImageView
            android:id="@+id/btn_hire"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/estekhdam_main_icon" />

        <ImageView
            android:id="@+id/btn_second"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/seckala_main_icon" />

        <ImageView
            android:id="@+id/btn_cars"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/car_main_icon" />

        <ImageView
            android:id="@+id/btn_home"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/house_main_icon" />

    </LinearLayout>

    <LinearLayout  android:gravity="center_horizontal|bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="2"
        android:background="@drawable/dock_hold_main_icon" >

        <ImageView
            android:id="@+id/btn_bus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/bus_main_icon" />

        <ImageView
            android:id="@+id/btn_train"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/train_main_icon" />

        <ImageView
            android:id="@+id/btn_airplan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/airplane_main_icon" />

        <ImageView
            android:id="@+id/btn_ads"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/comericals_main_icon" />

    </LinearLayout>

    <LinearLayout  android:gravity="center_horizontal|bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="2" 
        android:background="@drawable/dock_hold_main_icon">

        <ImageView
            android:id="@+id/btn_contact"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/contact_main_icon" />

        <ImageView
            android:id="@+id/btn_about_us"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/about_main_icon" />

        <ImageView
            android:id="@+id/btn_dlesson"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/digital_question_main_icon" />

        <ImageView
            android:id="@+id/btn_news"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:paddingLeft="2dp"
            android:paddingRight="2dp"
            android:scaleType="centerInside"
            android:paddingBottom="10dp"
            android:src="@drawable/news_main_icon" />

    </LinearLayout>

</LinearLayout>

所有布局都是相同的代码,除了在这个布局中我将大小设置为第一列以查看它是否有效但它不是:( 谁能告诉我我做错了什么???

编辑:我的项目布局中有所有布局文件夹-小,中,大,xlarge ...甚至布局-sw600dp。

【问题讨论】:

标签: android android-layout


【解决方案1】:

您应该为 value-sw600dp 增加 ImageView 的大小。 在这种情况下,正常值 (200dp) 和您提供的图像大小将转换为 100 像素左右。
您可以像这样设置 layout_weight 和 weightSum:

<LinearLayout  android:gravity="center_horizontal|bottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:layout_weight="2"
    android:weightSum="9"
    android:background="@drawable/dock_hold_main_icon" >


    <ImageView
        android:id="@+id/btn_bus"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
        android:scaleType="fitCenter"
        android:paddingBottom="10dp"
        android:src="@drawable/bus_main_icon" />
     ....
</LinearLayout>

像上面这样的布局可以使图像按宽度大小缩放。
或者您可以更改为使用 GridView 或 TableLayout

但我觉得还是算大小,用代码设置比较好。

【讨论】:

  • 感谢您的帮助,但您能告诉我 weight 和 weightSum 有什么区别吗?
  • @Ali 基本上,weightSum 是父视图的大小,layout_weight 是子视图与父视图的比例。对于exp:如果父母的weightSum = 9,孩子的layout_weight = 2,所以孩子的大小将是父母的2/9。你可以阅读developer.android.com/reference/android/widget/…stackoverflow.com/questions/15696920/…了解更多详情
  • 神号。我更改了一个 Linearlayout,因为您说没有任何改变。我什至无法理解为什么它只是为了这个所有其他设备都可以完美运行。实际上它使用 600dp 布局可能是导致问题的原因?
  • @Ali,如果什么都没改变就很奇怪,你在我上面发帖时改变了 android:layout_width="0dp"?如果可以更好,也尝试更改 scaleType="fitXy" 。不是因为600dp的布局,是因为对于这个设备,屏幕密度和屏幕分辨率很高,而200dp = 100px,屏幕宽度在1000px左右所以看起来很小,你可以尝试增加图像尺寸(我认为400dp 对于这个设备来说已经足够了,但对于其他设备来说可能太大了)。所以我更喜欢根据屏幕的像素宽度通过代码来计算和设置大小。
  • 在 xml 中将大小更改为 400dp 不再起作用!!!!我去计算并通过代码设置大小。
【解决方案2】:

您在&lt;ImageView&gt; 中尝试过吗?

android:scaleType = "fitCenter"
android:adjustViewBounds = "true"

顺便说一句,我建议你改变你的方法。尝试使用&lt;dimen&gt; 更改图像大小,它更易于使用和维护,而不是为每种显示类型创建一个 xml 文件。

请参阅this article 了解更多信息,此may 也可以帮助您。

编辑

也许您的显示器不符合被视为“大”布局的要求,因此 Android 不会将您的文件加载到 layout-large 文件夹中,而是加载到 layout 文件夹中,因为它是默认文件夹。尝试创建一个名为 layout-xlarge 的文件夹,看看是否有任何不同,但我仍然建议您在单独的 xml 文件中使用 &lt;dimen&gt;,而不是为每个屏幕尺寸创建一个布局。查看此article for multiple screen support 了解更多信息。

【讨论】:

  • 非常感谢@Murillo Henrique,但我尝试了adjustViewBounds,但它不起作用:(
  • @Ali 也许您的显示器不符合被视为“大”布局的要求,因此 Android 不会将您的文件加载到 layout-large 文件夹中,而是加载到 layout 文件夹中,因为它是默认的。尝试创建一个名为 layout-xlarge 的文件夹,看看是否有任何不同。如果是,我会更新这个答案。检查这个:developer.android.com/intl/ru/guide/practices/…
  • 抱歉迟到了,但我已经有了,正如我之前在 layout-sw600dp 中所说的,您可以看到:
  • 实际上我阅读了所有关于多屏文档的 android 文章。我不知道为什么,但它们都不起作用:(
猜你喜欢
  • 2011-12-31
  • 2017-08-12
  • 1970-01-01
  • 2014-12-23
  • 2023-04-03
  • 2020-02-07
  • 2018-06-17
  • 2011-06-28
相关资源
最近更新 更多