Android -手机上的布局不同于设计师的大小
本文关键字:设计师 不同于 布局 手机 Android | 更新日期: 2023-09-27 18:01:56
目前我正在开发一个移动应用程序,显示一些值(他们永远不会改变,所以他们被保存在一个列表)。当我在设计器中使用设备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>
好的,所以首先你不能为linearLayout4这样的视图使用相同的id。第二,正确的做法是最好的做法,而不是创建这么多布局,创建header和ListView,然后填充它。如果你有3个或333个项目,使用ListView
接下来不要像这样使用android:layout_marginRight="142dp"。边距和内边距应该更小,为了达到拉伸项目的效果,可以使用如下命令:
<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="match_parent" android:layout_height="match_parent",它将始终适合设备。
尝试创建不同背景的布局和视图,同时更改高度和宽度,以便您可以看到发生了什么
你必须记住设备有不同的屏幕尺寸和不同的密度。不要将像素大小设置为px,而是设置为sp(可缩放像素)。对于其他情况,使用dp代替px
您必须通过创建layout-ldpi, mdpi, hdpi, xhdpi来处理多种屏幕尺寸。所以无论屏幕大小如何,所有设备的外观和感觉都是一样的,而且字体应该在"sp"中其他元素应该在"dp"中
我认为你需要一个全尺寸的无拉伸图像在你的应用程序与本教程,你可以适应图像在任何设备没有问题
https://dzone.com/articles/using-full-size-none-stretched或者其他东西如果你想让你的应用适应设备或操作系统的类型
静态Device类包括几个属性和方法,这些属性和方法允许您的代码在运行时以非常简单和直接的方式处理设备差异:
设备。OS属性返回TargetPlatform的成员枚举:iOS、Android、WinPhone或其他。WinPhone成员指的是所有Windows和Windows Phone平台。
设备。Idiom属性返回targetidom
的成员。枚举:手机、平板、桌面或不支持
您可以在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/我希望这能解决你的问题。问候。