每当我在模拟器中打开它时,我的布局都会变得混乱(它是带有文本视图的背景图像)
My layout gets messy whenever I open it in the emulator (It's a background image with textviews)
对于我的项目,我使用背景图片,所以我可以放置不可见的按钮..
但问题是当我在模拟器中打开 activity 时,它只是一个沙拉(文本视图与按钮等混合在一起。)
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/firstname"
android:inputType="text"
android:layout_marginTop="57dp"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/lastname"
android:layout_alignStart="@+id/lastname" />
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/lastname"
android:inputType="text"
android:layout_below="@+id/firstname"
android:layout_alignRight="@+id/spinner"
android:layout_alignEnd="@+id/spinner" />
<EditText
android:layout_width="230dp"
android:layout_height="wrap_content"
android:id="@+id/email"
android:inputType="text"
android:layout_below="@+id/lastname"
android:layout_alignRight="@+id/lastname"
android:layout_alignEnd="@+id/lastname" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/password"
android:layout_marginTop="35dp"
android:layout_below="@+id/email"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/confirmPasswordEditText"
android:layout_marginTop="35dp"
android:layout_below="@+id/password"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/age"
android:layout_alignBottom="@+id/spinner"
android:layout_toLeftOf="@+id/imageViewUser"
android:layout_toStartOf="@+id/imageViewUser" />
<Spinner
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/spinner"
android:entries="@array/choose"
android:prompt="@string/genders"
android:layout_below="@+id/confirmPasswordEditText"
android:layout_toRightOf="@+id/confirmPasswordEditText"
android:layout_toEndOf="@+id/confirmPasswordEditText" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/joinus"
android:id="@+id/signUpButton"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/spinner"
android:layout_alignEnd="@+id/spinner" />
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/imageViewUser"
android:layout_below="@+id/age"
android:layout_alignLeft="@+id/email"
android:layout_alignStart="@+id/email" />
好的,据我所知,您使用的布局 ID 不正确。
例如,您有:
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/age"
android:layout_alignBottom="@+id/spinner"
android:layout_toLeftOf="@+id/imageViewUser"
android:layout_toStartOf="@+id/imageViewUser" />
表示
的行
android:layout_alignbottom="@+id/spinner"
应替换为
android:layout_alignbottom="@id/spinner"
没有“+”符号。
那样的话,您是在引用另一个布局而不是定义一个 id 值。
编辑
这是避免 xml 错误的视图示例:
<!-- This is the top-left-most layout in the view -->
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/age" />
<!-- This layout will be shown BELOW the 'age' layout -->
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/name"
android:layout_below="@id/age" />
<!-- This layout will be shown TO THE RIGHT OF the 'age' layout -->
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/birthday"
android:layout_toRightOf="@id/age" />
现在,如果您尝试在 @id/age
EditText 视图中引用 @id/birthday
,则会出现错误,因为布局还不知道 @id/birthday
。它的定义如下 @id/age
。
这有意义吗?
@Yasmin12,您好,我能理解这里发生了什么,您的布局 "dp" 导致了问题。请改用 "dip" 它们会帮助您调试布局,因为它们会尝试在多种屏幕分辨率下保持一致的尺寸,
<ImageView
android:id="@+id/avtar_animation_11"
android:layout_width="45dip"
android:layout_height="45dip"
android:src="@drawable/avtar011"/>
当您为尺寸提供 "dp" 时支持多屏幕,实际上 android 希望您为不同的屏幕分辨率提供不同的值。让我们说下面是您的 imagview 尺寸,在您的 android 项目的 res 文件夹中创建几个文件夹,如下所示
values-hdpi
,
values-mdpi
,
values-ldpi
,
values-xhdpi
,
values-xxhdpi
并在其中每个制作一个 dimens.xml
文件并写入
<dimen name="image_view_width">28dp</dimen>
<dimen name="image_view_height">28dp</dimen>
现在我在这里提到了 "dp" 而不是 dip android 希望我跟踪不同屏幕分辨率的不同尺寸,所以我将更改 image_view_width 和 image_view_height 值位于 dimens.xml
所在的单独值文件夹中。确保您的 dp 值根据您希望视图适合的屏幕分辨率而变化。
<ImageView
android:id="@+id/avtar_animation_11"
android:layout_width="@dimen/image_view_width"
android:layout_height="@dimen/image_view_height"
android:src="@drawable/avtar011"/>
困难的部分现在已经结束 android 将根据您的应用所在的屏幕选择 dimens.xml
值之一 运行,瞧,现在您的布局很棒
对于我的项目,我使用背景图片,所以我可以放置不可见的按钮.. 但问题是当我在模拟器中打开 activity 时,它只是一个沙拉(文本视图与按钮等混合在一起。)
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/firstname"
android:inputType="text"
android:layout_marginTop="57dp"
android:layout_alignParentTop="true"
android:layout_alignLeft="@+id/lastname"
android:layout_alignStart="@+id/lastname" />
<EditText
android:layout_width="200dp"
android:layout_height="wrap_content"
android:id="@+id/lastname"
android:inputType="text"
android:layout_below="@+id/firstname"
android:layout_alignRight="@+id/spinner"
android:layout_alignEnd="@+id/spinner" />
<EditText
android:layout_width="230dp"
android:layout_height="wrap_content"
android:id="@+id/email"
android:inputType="text"
android:layout_below="@+id/lastname"
android:layout_alignRight="@+id/lastname"
android:layout_alignEnd="@+id/lastname" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/password"
android:layout_marginTop="35dp"
android:layout_below="@+id/email"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/confirmPasswordEditText"
android:layout_marginTop="35dp"
android:layout_below="@+id/password"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/age"
android:layout_alignBottom="@+id/spinner"
android:layout_toLeftOf="@+id/imageViewUser"
android:layout_toStartOf="@+id/imageViewUser" />
<Spinner
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/spinner"
android:entries="@array/choose"
android:prompt="@string/genders"
android:layout_below="@+id/confirmPasswordEditText"
android:layout_toRightOf="@+id/confirmPasswordEditText"
android:layout_toEndOf="@+id/confirmPasswordEditText" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/joinus"
android:id="@+id/signUpButton"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/spinner"
android:layout_alignEnd="@+id/spinner" />
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/imageViewUser"
android:layout_below="@+id/age"
android:layout_alignLeft="@+id/email"
android:layout_alignStart="@+id/email" />
好的,据我所知,您使用的布局 ID 不正确。
例如,您有:
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"
android:id="@+id/age"
android:layout_alignBottom="@+id/spinner"
android:layout_toLeftOf="@+id/imageViewUser"
android:layout_toStartOf="@+id/imageViewUser" />
表示
的行android:layout_alignbottom="@+id/spinner"
应替换为
android:layout_alignbottom="@id/spinner"
没有“+”符号。
那样的话,您是在引用另一个布局而不是定义一个 id 值。
编辑 这是避免 xml 错误的视图示例:
<!-- This is the top-left-most layout in the view -->
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/age" />
<!-- This layout will be shown BELOW the 'age' layout -->
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/name"
android:layout_below="@id/age" />
<!-- This layout will be shown TO THE RIGHT OF the 'age' layout -->
<EditText
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/birthday"
android:layout_toRightOf="@id/age" />
现在,如果您尝试在 @id/age
EditText 视图中引用 @id/birthday
,则会出现错误,因为布局还不知道 @id/birthday
。它的定义如下 @id/age
。
这有意义吗?
@Yasmin12,您好,我能理解这里发生了什么,您的布局 "dp" 导致了问题。请改用 "dip" 它们会帮助您调试布局,因为它们会尝试在多种屏幕分辨率下保持一致的尺寸,
<ImageView
android:id="@+id/avtar_animation_11"
android:layout_width="45dip"
android:layout_height="45dip"
android:src="@drawable/avtar011"/>
当您为尺寸提供 "dp" 时支持多屏幕,实际上 android 希望您为不同的屏幕分辨率提供不同的值。让我们说下面是您的 imagview 尺寸,在您的 android 项目的 res 文件夹中创建几个文件夹,如下所示
values-hdpi
,
values-mdpi
,
values-ldpi
,
values-xhdpi
,
values-xxhdpi
并在其中每个制作一个 dimens.xml
文件并写入
<dimen name="image_view_width">28dp</dimen>
<dimen name="image_view_height">28dp</dimen>
现在我在这里提到了 "dp" 而不是 dip android 希望我跟踪不同屏幕分辨率的不同尺寸,所以我将更改 image_view_width 和 image_view_height 值位于 dimens.xml
所在的单独值文件夹中。确保您的 dp 值根据您希望视图适合的屏幕分辨率而变化。
<ImageView
android:id="@+id/avtar_animation_11"
android:layout_width="@dimen/image_view_width"
android:layout_height="@dimen/image_view_height"
android:src="@drawable/avtar011"/>
困难的部分现在已经结束 android 将根据您的应用所在的屏幕选择 dimens.xml
值之一 运行,瞧,现在您的布局很棒