当我的应用程序在设备或模拟器上运行时,布局不会保持其比例

时间:2015-08-29 13:37:33

标签: android android-layout

这是我的xml代码。我遇到的问题是任何布局元素如按钮或imageview在预览模式下看起来都很好......但是当我在任何设备或模拟器上运行它时...它不能保持它的比例...

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@drawable/im">

    <TextView
        android:layout_width="350dp"
        android:layout_height="75dp"
        android:layout_marginTop="-30dp"
        android:background="@drawable/display"
        android:layout_marginLeft="17dp"
        android:id="@+id/display"/>


    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginLeft="-330dp"
        android:layout_marginTop="150dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b1"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="150dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b2"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="150dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b3"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="250dp"
        android:layout_marginLeft="-301dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b4"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="250dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b5"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="350dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b6"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="350dp"
        android:layout_marginLeft="-301dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b7"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="350dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b8"/>

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="250dp"
        android:background="@drawable/drawable_button"
        android:alpha="0.8"
        android:id="@+id/b9"/>


 </LinearLayout>

enter image description here

2 个答案:

答案 0 :(得分:0)

您的实施问题是您使用了绝对位置,而理想情况下您应该使用相对定位。我使用gridlayout粘贴了一些代码。进行相关更改并相应使用。让我知道它是否适合你!

<?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">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="75dp"
        android:layout_margin="30dp"
        android:id="@+id/display"
        android:background="#EDE7F6"
        android:layout_margin="16dp"/>

    <GridLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="30dp"
        android:columnCount="3"
        android:rowCount="3"
        android:layout_gravity="center">

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b1"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b2"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b3"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b4"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b5"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b6"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b7"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b8"/>

        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:alpha="0.8"
            android:background="#42A5F5"
            android:id="@+id/b9"/>

    </GridLayout>

</LinearLayout> 

答案 1 :(得分:0)

尝试添加最大宽度和最大高度      layout_weight = “1” 到所有的酒吧尝试     比重=“中心” 你必须让手机为这些酒吧制作一个大小,如果你使用35dp大小,这在其他Android设备上是不同的,因为dp是已知的px大小,并且电话的重新设置并不是因为它在另一部手机中变得越来越小。 你可以只使用网格布局的线性布局。

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:background="#000000">

<Button
    android:layout_height="60dp"
    android:layout_width="match_parent"
    android:background="@drawable/icon_you_should_know"
    android:maxWidth="360dp"/>

<LinearLayout
    android:layout_height="120dp"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:gravity="top|center">

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_wounded_demon"/>

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_maze_desert"/>

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_working_with_darkness"/>

</LinearLayout>

<LinearLayout
    android:layout_height="120dp"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:gravity="top|center">

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_weak_spot"/>

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_none"/>

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_none"/>

</LinearLayout>

<LinearLayout
    android:layout_height="120dp"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:gravity="top|center">

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_none"/>

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_none"/>

    <Button
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_weight="1.0"
        android:maxWidth="120dp"
        android:background="@drawable/icon_none"/>

</LinearLayout>

我在我的应用程序中的布局及其对我的工作也希望能为你工作。

抱歉,我的英语不是很好。