Android - 手机上的布局与设计师的大小不同

时间:2016-08-10 12:23:39

标签: c# android layout xamarin

目前,我正在开发一个显示某些值的移动应用程序(它们永远不会更改,因此它们会保存在列表中)。当我使用设备 4.7 WXGA 在设计器中设计页面时,我有很大的空间到底部,但在我的真实手机(摩托罗拉Moto G3)上没有空间。

现在我担心如果我在不同的手机(三星等)上部署应用程序会发生什么。我一直认为使用AXML之类的东西创建UI的优势使得应用程序能够响应"意思是它适合它运行的设备。但为什么这不会发生?

有人可以给我一个提示如何实现这一目标吗?

编辑: 这是我的AXML代码 - 在这里我用文本

替换了真实文本
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">
    <LinearLayout
        android:orientation="vertical"
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout1"
        android:layout_marginTop="5dp">
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/linearLayout2"
            android:layout_margin="5dp"
            android:gravity="center">
            <LinearLayout
                android:orientation="horizontal"
                android:minWidth="25px"
                android:minHeight="25px"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/linearLayout6">
                <ImageView
                    android:layout_width="32dp"
                    android:layout_height="40dp"
                    android:id="@+id/imgLeft"
                    android:src="@drawable/arrow_left"
                    android:layout_marginRight="50dp" />
            </LinearLayout>
            <LinearLayout
                android:orientation="horizontal"
                android:minWidth="25px"
                android:minHeight="25px"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/linearLayout5"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/tbDin"
                android:textSize="35dp"
                android:layout_marginRight="15dp"
                android:textColor="@android:color/black" />
            <TextView
                android:layout_width="60dp"
                android:layout_height="match_parent"
                android:id="@+id/tbDinWert"
                android:textSize="35dp"
                android:textColor="@android:color/black"
                android:gravity="center"
                android:text="XX" />
            <ImageView
                android:layout_width="32dp"
                android:layout_height="40dp"
                android:id="@+id/imgRight"
                android:src="@drawable/arrow_right"
                android:layout_marginLeft="50dp" />
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:orientation="vertical"
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout3"
        android:background="@android:color/transparent"
        android:layout_marginTop="5dp">
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb1"
                android:textSize="16dp"
                android:layout_marginRight="142dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:inputType="none"
                android:textColor="@android:color/black"
                android:gravity="center" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb2"
                android:textSize="16dp"
                android:layout_marginRight="142dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:inputType="none"
                android:textColor="@android:color/black"
                android:gravity="center" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb3"
                android:textSize="16dp"
                android:layout_marginRight="142dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:inputType="none"
                android:textColor="@android:color/black"
                android:gravity="center" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb3"
                android:textSize="16dp"
                android:layout_marginRight="142dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:inputType="none"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb4"
                android:textSize="16dp"
                android:layout_marginRight="142dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:inputType="none"
                android:textColor="@android:color/black"
                android:gravity="center" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb5"
                android:textSize="16dp"
                android:layout_marginRight="142dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:textColor="@android:color/black"
                android:gravity="center" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb6"
                android:textSize="10dp"
                android:layout_marginRight="142dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:textColor="@android:color/black"
                android:gravity="center" />
        </LinearLayout>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:id="@+id/linearLayout4"
            android:layout_margin="5dp"
            android:background="@android:color/transparent"
            android:paddingLeft="15dp">
            <TextView
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:id="@+id/tb7"
                android:textSize="10dp"
                android:textColor="@android:color/black"
                android:layout_marginBottom="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="142dp"
                android:gravity="center" />
            <TextView
                android:text="Text"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/TextView4"
                android:textSize="35dp"
                android:background="@android:color/transparent"
                android:textColor="@android:color/black"
                android:gravity="center" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

4 个答案:

答案 0 :(得分:1)

好的,首先你不能对像linearLayout4这样的视图使用相同的id。其次,正确的做法是最佳实践,因此需要创建如此多的布局,创建标题和ListView,然后填充它。天气你有3项或333使用ListView。

接下来不要使用android:layout_marginRight =&#34; 142dp&#34;像这样。边距和填充应该小得多,并且对于拉伸项目的效果,请使用以下内容:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/linearLayout4"
    android:layout_margin="5dp"
    android:gravity="center">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="16dp"
        android:textColor="@android:color/black"
        android:text="Value"
        android:layout_weight="0.5"
        android:gravity="center"/>
    <TextView
        android:text="Text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="35dp"
        android:textColor="@android:color/black"
        android:layout_weight="0.5"
        android:gravity="center"/>
</LinearLayout>

您可以粘贴它以查看结果。

尝试在您创建应用的程序中练习设计。如果您使用的是AndroidStudio,则它具有预览功能,因此您可以检查不同大小的屏幕。

对于任何布局或视图,如果你设置android:layout_width =&#34; match_parent&#34;机器人:layout_height =&#34; match_parent&#34;它总是适合设备。

尝试使用不同的背景创建布局和视图,同时更改高度和宽度,以便您可以看到正在发生的事情。

答案 1 :(得分:0)

您必须记住,设备具有不同的屏幕尺寸和不同的密度。不要在px中设置像素大小,而在sp中设置字体(可缩放像素)。对于其他事项,请使用dp而不是px

答案 2 :(得分:0)

您必须通过创建layout-ldpi,mdpi,hdpi,xhdpi来处理多种屏幕尺寸。因此,任何屏幕尺寸都在那里,所有设备的外观和感觉都是相同的,并且字体应该是“sp”和“dp”中的其他元素。

答案 3 :(得分:0)

我认为您在本教程中需要一个全尺寸的无拉伸图像,您可以在每个设备中调整图像而不会出现问题

https://dzone.com/articles/using-full-size-none-stretched

或者另一件事,如果你想让你的应用程序适应设备或操作系统的类型。

静态Device类包含几个属性和方法,允许您的代码在运行时以非常简单和直接的方式处理设备差异:

  • Device.OS 属性返回TargetPlatform的成员 枚举:iOS,Android,WinPhone或其他。 WinPhone成员 指所有Windows和Windows Phone平台。

  • Device.Idiom 属性返回TargetIdiom的成员
    枚举:电话,平板电脑,桌面或不支持。

您可以在if和else语句或switch和case块中使用这两个属性来执行特定于特定平台的代码。

https://developer.xamarin.com/guides/xamarin-forms/platform-features/device/

https://forums.xamarin.com/discussion/56817/how-to-use-platform-idiom-in-xaml

在本书中,您可以看到使用 Device.OnPlatform 第58页的一个很好的例子。

https://developer.xamarin.com/guides/xamarin-forms/creating-mobile-apps-xamarin-forms/

我希望你能解决问题。问候。