1

我创建了这个名为 searchfragment 的片段。下面是 searchfragment 的布局 XML 文件。不幸的是,设计并没有我想要的那么流畅。

这是我希望它看起来的样子: 第一行:欢迎文本(有效) 第二行:搜索输入字段(也有效) 第三行(这里变得复杂):应该有一个名为“搜索”的文本然后是带有您可以搜索的项目的 Spinner(例如名称、年份、价格)。然后是搜索按钮。接下来是您可以对输出进行排序。因此,有一个带有“排序”的文本、一个带有标准的 Spinner 和一个排序按钮。最好的情况是搜索部分应该左对齐,排序右,但仍然居中。第四行:输出字段。现在,由于这些元素都存在于我的设备上,它们不在 Eclipse 的图形布局中。我已经尝试了几个小时来让它工作,但如果你不检查你的对象,这有点困难。

长文本 - 短任务:请帮我优化我的设计。

搜索片段.xml:

<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
    android:layout_gravity="center"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_gravity="center"
        android:text="@string/welcome" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/edit_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:hint="@string/edit_message" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center|center_horizontal"
        android:layout_marginTop="8dp" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/search_for" />

        <Spinner
            android:id="@+id/criterion"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:entries="@array/searcharray"
            android:prompt="@string/prompt" />

        <Button
            android:id="@+id/btnSubmit"
            android:layout_width="136dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/android"
            android:onClick="sendMessage"
            android:text="@string/button_send" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/sort_for"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <Spinner
                android:id="@+id/sort"
                android:layout_width="wrap_content"
                android:layout_height="0dip"
                android:layout_weight="1"
                android:entries="@array/sortarray"
                android:prompt="@string/prompt" />

        </LinearLayout>

        <Button
            android:id="@+id/sort_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/android"
            android:onClick="sortAgain"
            android:text="@string/button_send" />

    </LinearLayout>

<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
     <TextView
        android:id="@+id/showResults"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</ScrollView>


</LinearLayout>

我添加了当前设计的照片。周围有红框的空间是第三“行”,应该改变。第二个微调器(我不知道为什么)太宽了。它应该和第一个一样宽。然后所有元素的高度应该大致相同,并且元素应该居中。

当前状态

4

1 回答 1

1

您的布局走在了正确的轨道上,但是您的第二个Spinner占用了这么多空间的原因是您已将其设置layout_weight为 1,并且由于它是唯一一个带有 的layout_weight,它占用了其余的空间自由。

如果您希望这些项目在屏幕上占据相对数量的空间,那么您可以坚持使用layout_weight并赋予所有项目该属性。

例如,仅对于您的第三行,您将摆脱LinearLayout您周围的Spinner,更改一些layout_width属性并为您的所有项目提供layout_weight.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center|center_horizontal"
    android:layout_marginTop="8dp" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/search_for" />

    <Spinner
        android:id="@+id/criterion"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:entries="@array/searcharray"
        android:prompt="@string/prompt" />

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/android"
        android:onClick="sendMessage"
        android:text="@string/button_send" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/sort_for"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner
        android:id="@+id/sort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:entries="@array/sortarray"
        android:prompt="@string/prompt" />

    <Button
        android:id="@+id/sort_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/android"
        android:onClick="sortAgain"
        android:text="@string/button_send" />

</LinearLayout>

这将使您的所有物品具有相同的权重,因此 的TextViews尺寸与 的尺寸相同,Spinners其尺寸与 的尺寸相同Buttons。使用layout_weight属性使它们更具相关性,例如,如果您希望 的Buttons大小是 的两倍Spinners,请将它们设置layout_weight为 2。

于 2013-02-13T17:56:21.753 回答