我正在为学校开发一个Android应用程序。在Android的预览版上,我设计的布局看起来不错,但一旦我把它部署到我的物理设备(HTC m8,Android5.0.1)上,卡纸上的所有东西都会乱七八糟。
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="de.seschi98.trgapp.activities.ScheduleActivity"
tools:showIn="@layout/activity_schedule">
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="120dp">
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="4"
android:rowCount="1"
android:columnOrderPreserved="false"
android:orientation="horizontal"
android:rowOrderPreserved="false">
<TextView
android:id="@+id/lesson_number"
android:text="01"
android:textSize="22dp"
android:layout_width="wrap_content"
android:layout_column="0"
android:layout_row="0"
android:layout_rowWeight="1"
android:gravity="center_vertical|center_horizontal"
android:textStyle="bold"
android:layout_columnWeight="20" />
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_column="1"
android:layout_row="0"
android:columnCount="2"
android:layout_columnWeight="90"
android:rowCount="3"
android:layout_height="match_parent">
<TextView
android:gravity="center_vertical|center_horizontal"
android:id="@+id/lesson_name"
android:text="Chemistry"
android:textSize="22dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="0"
android:layout_rowWeight="15"
android:layout_gravity="center_horizontal"
android:paddingTop="10dp"
android:layout_width="match_parent" />
<TextView
android:gravity="bottom|center_horizontal"
android:id="@+id/teacher"
android:text="Mr Smith"
android:layout_height="wrap_content"
android:textSize="16dp"
android:layout_column="1"
android:layout_row="1"
android:layout_rowWeight="20"
android:layout_gravity="center_horizontal"
android:layout_width="match_parent" />
<TextView
android:gravity="top|center_horizontal"
android:id="@+id/room"
android:text="Room A-123"
android:textSize="16dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="2"
android:layout_rowWeight="20"
android:layout_gravity="center_horizontal"
android:layout_width="match_parent" />
</GridLayout>
<View android:layout_row="0"
android:layout_column="2"
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_columnWeight="15">
</View>
<View android:layout_row="0"
android:id="@+id/badge"
android:layout_column="3"
android:layout_height="match_parent"
android:layout_width="0dp"
android:background="#c0392b"
android:layout_columnWeight="5">
</View>
</GridLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
预览屏幕
设备截屏 (不关心动作栏或其他东西,它只是CardView.)
// Update:昨天将我的Android版本升级到6.0.0 Marshmallow,现在运行良好。但我包括了AppCompat .它不适用于早期版本的Android的原因是什么?
发布于 2016-02-01 16:06:41
不过,这是一个版本错误:
经过一些测试之后,我意识到我需要将布局文件中的<GridLayout>
更改为<android.support.v7.widget.GridLayout>
。没有考虑到这一点,因为我认为GridLayout将与安卓5兼容.
所以现在它在我所有的设备上都能正常工作,就像Android 5和Android 6一样。尽管它对我没有太大帮助,但是谢谢你的快速回答!
发布于 2016-01-26 15:31:26
android studio中的预览有时与您的设备不同,请确保在android studio中设置相同的手机屏幕大小和预览。
发布于 2016-01-26 15:59:24
肯尼已经给了你答案。
有时预览会显示得很好,但在某些设备上却是不同的。这通常是因为屏幕大小和(或)屏幕分辨率。
您可以为屏幕大小添加指定的布局。但是你必须明白android运行在各种各样的设备和屏幕上。在某些屏幕上,你总是会遇到麻烦,也许专注于小的设计问题并不是一条出路。
请查看以下链接:
屏幕分布
编辑:
如果每个设备都有相同的问题,那么这可能不是我们已经告诉过的。让我再检查一下您的代码,然后再告诉您一些其他的内容。
https://stackoverflow.com/questions/35017420
复制相似问题