xml布局问题:不适合所有屏幕

时间:2015-02-05 07:35:54

标签: android android-xml

我遇到布局问题。我需要在单行中添加带有imagebutton按钮的edittext。

我需要为date.another添加2个timepicker one time。

我在一行中获得日期和时间的两个选择器。但是在图形布局中单击预览屏幕时,它显示重叠,并且所有屏幕的edittext和imagebutton之间留有更多空格。

下面我发布了迄今为止我尝试过的代码。

activity_main.xml中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:onClick="selectDate" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="55dp"
        android:background="@drawable/text"
        android:ems="5"
        android:inputType="date" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/editText1"
        android:layout_toRightOf="@+id/editText1"
        android:contentDescription="@string/selectdate"
        android:cropToPadding="true"
        android:onClick="selectDate"
        android:src="@drawable/ic_datepicker" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignBottom="@+id/imageButton1"
        android:layout_toRightOf="@+id/imageButton1"
        android:background="@drawable/text"
        android:ems="5"
        android:inputType="date" >

        <requestFocus />
    </EditText>

    <ImageButton
        android:id="@+id/imageButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/editText2"
        android:layout_toRightOf="@+id/editText2"
        android:contentDescription="@string/selecttime"
        android:cropToPadding="true"
        android:onClick="selecttime"
        android:src="@drawable/ic_datepicker" />

</RelativeLayout>

Editext和imagebutton必须是单行。它必须完全适合所有设备。任何人都可以帮助我。谢谢。

4 个答案:

答案 0 :(得分:0)

不幸的是,Android遭受了所谓的&#34;碎片问题&#34;。这个问题的一部分是你作为开发人员需要做一些工作来支持不同的屏幕尺寸。

Here是解释此过程的指南。您需要为应用需要支持的不同屏幕尺寸创建不同的布局。

答案 1 :(得分:0)

您可以使用线性布局而不是相对布局,其值为orientation =“horizo​​ntal”。

您可以在http://developer.android.com/guide/topics/ui/layout/linear.html找到更多信息,但我在下面提供了简要说明。

这将自动水平排列编辑文本和图像按钮。要强制它们出现在同一行而不重叠,可以将每个视图宽度指定为0dp,将其权重指定为1。

这将告诉android在屏幕上布局宽度相等的视图,而不管屏幕大小如何。如果您希望一个视图更宽,请更改其权重值,使其高于另一个。它总是最终成为总重量的比率。

答案 2 :(得分:0)

您可以尝试这种布局,它将满足您的要求并适合所有屏幕。

虽然我通过将相对布局替换为线性布局来对xml布局进行一些更改

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:onClick="selectDate" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_weight="1.5"
        android:inputType="date" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:cropToPadding="true"
        android:onClick="selectDate"
        android:src="@drawable/ic_launcher" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.5"
        android:layout_gravity="bottom"
        android:inputType="date" >

    </EditText>

    <ImageButton
        android:id="@+id/imageButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:cropToPadding="true"
        android:onClick="selecttime"
        android:src="@drawable/ic_launcher" />

</LinearLayout>

希望这能以某种方式帮助你:)

答案 3 :(得分:0)

将图像文本放在一个方向为“水平”的linearlayout中,并将edittext和button放在其中。您可以使用weightSum为线性布局中的元素赋予权重,以便它们在比例相同的距离,而与设备屏幕大小无关。

<LinearLayout
   android:id="@+id/linearlayout1"
   android:layout_width="match_parent"
   android:layout_height="30dp"
   android:orientation="horizontal"
   android:weightSum="2"
>
<EditText
        android:id="@+id/editText1"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="55dp"
        android:background="@drawable/text"
        android:ems="5"
        android:layout_weight="1.0"
        android:inputType="date" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/editText1"
        android:layout_toRightOf="@+id/editText1"
        android:contentDescription="@string/selectdate"
        android:cropToPadding="true"
        android:onClick="selectDate"
        android:layout_weight="1.0"
        android:src="@drawable/ic_datepicker" />
</LinearLayout>