【问题标题】:How it works that XML show all on display?XML 显示所有内容是如何工作的?
【发布时间】:2017-01-06 21:25:23
【问题描述】:

它是如何工作的,无论我有 4" 显示器还是 7" 显示器,android 都会向我显示所有显示的框?没关系,android 显示的盒子有点小,但我必须把所有的盒子都展示出来。

<?xml version="1.0" encoding="UTF-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1"
    android:background="@drawable/box_ressourcen">


        <LinearLayout
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:background="@drawable/box"
            android:id="@+id/box1"
            android:showDividers="beginning"
            android:layout_gravity="top"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="false"
            android:layout_below="@+id/imageView"
            android:layout_marginTop="-20dp"
            android:layout_alignParentEnd="false"
            android:gravity="center">

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:id="@+id/myimage1"
            android:src="@drawable/inventar"/>

    </LinearLayout>

    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:layout_alignParentStart="false"
        android:src="@drawable/inventar_ressourcen"
        android:layout_marginTop="-25dp" />

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:background="@drawable/box"
        android:id="@+id/box2"
        android:showDividers="beginning"
        android:layout_gravity="top"
        android:layout_alignTop="@+id/box1"
        android:layout_toEndOf="@+id/box1"
        android:gravity="center">

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:id="@+id/imageView2"
            android:src="@drawable/inventar" />
    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:background="@drawable/box"
        android:id="@+id/box3"
        android:showDividers="beginning"
        android:layout_gravity="top"
        android:layout_alignTop="@+id/box2"
        android:layout_toEndOf="@+id/box2"
        android:gravity="center">

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:id="@+id/imageView3"
            android:src="@drawable/inventar" />
    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:background="@drawable/box"
        android:id="@+id/box4"
        android:showDividers="beginning"
        android:layout_gravity="top"
        android:gravity="center"
        android:layout_alignTop="@+id/box3"
        android:layout_toEndOf="@+id/box3">

        <ImageView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:id="@+id/imageView4"
            android:src="@drawable/inventar" />
    </LinearLayout>

</RelativeLayout>

我该如何改变它,框显示在一行中并在行尾中断并转到下一行?

例子:

我的盒子:
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10

显示:
B1 B2 B3 B4
B5 B6 B7 B8
B9 B10

【问题讨论】:

    标签: android xml android-studio


    【解决方案1】:

    对于每种尺寸,您应该制作不同的布局,为此,您需要创建另一个布局,其名称与您已有的布局相同,但您添加了这样的限定符:

    您点击尺寸并选择您想要的尺寸。对每种尺寸(sall、normal、large、X-Large)都这样做,应该没问题。

    【讨论】:

      【解决方案2】:

      这取决于您的视图的大小。

      由您决定是按照屏幕大小显示所有内容还是让它在屏幕中滚动。

      您可以使用 XML 、代码或同时使用两者来划分屏幕。

      如果你愿意,你可以选择弹性尺寸(宽度/高度)或包装它,当你包装它时,它将采用其子/子的高度,或者你可以再次使用 XML、代码或两者都有。

      了解weight_sumlayout_weight 以及如何根据屏幕尺寸为布局指定尺寸

      What is android:weightSum in android, and how does it work?

      https://developer.android.com/training/multiscreen/screensizes.html

      https://developer.android.com/guide/practices/screens_support.html

      https://developer.android.com/training/multiscreen/screendensities.html

      在这个阶段对你来说最简单的就是这个 https://stackoverflow.com/a/12302811/5188159

      还阅读了有关如何根据屏幕尺寸设置尺寸的信息,这将在任何屏幕上以相同的方式显示您的 XML

      简单的数学 - 将我的布局高度从屏幕分配 10%,这样大小将保持在任何类型的屏幕中的比例

      作为一个代码 sn-p 这将为您提供最新版本的 android 的屏幕尺寸高度和宽度

       DisplayMetrics displaymetrics = new DisplayMetrics();
           this.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
              int height = displaymetrics.heightPixels;
              int width = displaymetrics.widthPixels;
      

      现在您可以使用比率有问题地设置尺寸 要学习它,你可以搜索 ;) 我不是告诉你 :) 祝你好运!

      【讨论】:

        【解决方案3】:

        从你说话的方式很明显你错过了理论部分。

        基本上你必须为你可能需要的主要配置做不同的布局,在你的情况下,一个基本的布局就像你做的那样,然后如果我很理解一个小屏幕的布局,在你的情况下是 4 英寸。要了解您应该如何命名它们,我强烈建议您去 trought 他documentation 英寸被认为是至少 470dp x 320dp 的普通屏幕

        我特别建议你这篇文章,其中也解释了为什么不能正常调用四英寸屏幕的最佳实践

        为不同的屏幕尺寸提供不同的布局

        默认情况下,Android 会调整您的应用程序布局以适应当前 设备屏幕。在大多数情况下,这可以正常工作。在其他情况下,您的 UI 可能看起来不太好,可能需要针对不同的屏幕进行调整 尺寸。例如,在更大的屏幕上,您可能需要调整 一些元素的位置和大小,以利用额外的 屏幕空间,或在较小的屏幕上,您可能需要调整尺寸 以便所有内容都可以在屏幕上显示。

        可用于提供特定于尺寸的配置限定符 资源有 small、normal、large 和 xlarge。例如,布局 对于超大屏幕应该进入 layout-xlarge/。

        从 Android 3.2(API 级别 13)开始,上述尺寸组为 已弃用,您应该改用 swdp 配置 限定符来定义您所需的最小可用宽度 布局资源。例如,如果您的多窗格平板电脑布局 至少需要 600dp 的屏幕宽度,你应该把它放在 布局-sw600dp/.使用新技术声明布局 资源在有关声明平板电脑的部分中进一步讨论 适用于 Android 3.2 的布局。

        这是每个 Android 开发人员都应该知道的基本技能,因此我强烈建议您了解它的工作原理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-28
          • 2019-11-05
          • 1970-01-01
          • 1970-01-01
          • 2019-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多