如何显示XML显示全部?

时间:2016-08-30 14:21:45

标签: android xml android-studio

它是如何工作的,那个android向我展示了所有展示的盒子,无论我有4"显示或7"显示?没关系,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>

我怎么能改变它,盒子显示在一条线上并在线的末端断开并转到下一行?

示例:

MyBoxes:
B1 B2 B3 B4 B5 B6 B7 B8 B9 B10

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

3 个答案:

答案 0 :(得分:0)

对于每个尺寸,你应该做一个不同的布局,为了做到这一点你创建了另一个布局,其名称与你已经拥有的布局相同,但你添加了这样的限定符:

单击尺寸并选择所需尺寸。为每个尺寸(sall,normal,large,X-Large)执行此操作,它应该没问题。

enter image description here

答案 1 :(得分:0)

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

由您决定是否要在屏幕尺寸中显示所有内容,或者让它在屏幕上滚动。

您可以使用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%,这样尺寸就可以保持任何一种屏幕的比例

作为代码片段,这将为您提供最新的Android视觉的屏幕尺寸高度和宽度

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

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

答案 2 :(得分:0)

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

基本上你必须为你需要的主要配置做不同的布局,在你的情况下,你需要做一个基本的配置,然后如果我很好理解一个用于较小屏幕,在你的情况下为4英寸。为了理解你应该怎么命名,我会热烈建议你去documentation英寸被认为是一个至少470dp x 320dp的正常屏幕

特别是我建议你这段经文,在那里解释为什么不是最佳做法将四英寸屏幕称为正常

  

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

     

默认情况下,Android调整应用程序布局的大小以适应当前的大小   设备屏幕。在大多数情况下,这很好。在其他情况下,您的UI   可能看起来不太好,可能需要针对不同的屏幕进行调整   大小。例如,在较大的屏幕上,您可能想要调整   一些元素的位置和大小,以利用额外的   屏幕空间,或在较小的屏幕上,您可能需要调整大小   所以一切都可以放在屏幕上。

     

可用于提供特定于大小的配置限定符   资源是小的,正常的,大的和xlarge。例如,布局   对于超大屏幕应该在layout-xlarge /.

中      

从Android 3.2(API级别13)开始,上面的大小组是   不推荐使用,您应该使用swdp配置   限定符,用于定义您所需的最小可用宽度   布局资源。例如,如果您的多窗格平板电脑布局   需要至少600dp的屏幕宽度,你应该把它放入   布局sw600dp /。使用新技术声明布局   资源将在“声明平板电脑”一节中进一步讨论   适用于Android 3.2的布局。

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