【问题标题】:Beginner android developer - having difficulty with layouts初级 android 开发人员 - 布局有困难
【发布时间】:2012-12-07 20:02:53
【问题描述】:

我有一个位于ScrollView 下方的按钮,该按钮设置为与父级底部对齐。滚动视图的高度设置为wrap_content。一旦ScrollView 填充了内容,它就会出现在按钮下方。如何将其设置为不在按钮后面,以便ScrollView在按钮开始时结束?

我尝试将android:layout_below 放置在底部按钮中,当这不起作用时,我尝试在按钮上方的ScrollView 中放置layout_above。最后一个导致我的应用程序在启动时崩溃,不知道为什么。第一个一旦ScrollView 比屏幕长,它会导致按钮被放置在下面而无法访问它。

这是我的 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:background="@color/light_blue"
    android:padding="5dp"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/queryPromt"
        android:imeOptions="actionNext"
        android:inputType="text"
        android:textColor="#000" />

    <EditText
        android:id="@+id/editText_tag"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText_query"
        android:layout_marginTop="10dp"
        android:layout_toLeftOf="@+id/saveButton"
        android:hint="@string/tagPrompt"
        android:imeOptions="actionDone"
        android:inputType="text" />

    <Button
        android:id="@id/saveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/editText_query"
        android:text="@string/save" />

    <TextView
        android:id="@+id/textView_taggedSearches"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/saveButton"
        android:layout_below="@id/saveButton"
        android:layout_marginTop="10dp"
        android:background="#666"
        android:gravity="center_horizontal"
        android:text="@string/taggedSearches"
        android:textColor="#FFF"
        android:textSize="18sp" />

    <ScrollView
        android:id="@+id/scrollView_query"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView_taggedSearches"
        android:padding="5dp" >

        <TableLayout
            android:id="@+id/tableLayout_query"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:stretchColumns="*" >
        </TableLayout>
    </ScrollView>

    <Button
        android:id="@+id/button_clearTags"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="@string/clearTags" />

</RelativeLayout>

【问题讨论】:

    标签: android layout button scrollview


    【解决方案1】:

    尝试添加

    android:layout_below="@id/scrollView_query"
    

    到最后一个按钮

    【讨论】:

    • 感谢您的建议,但是一旦滚动视图变得比屏幕长,按钮就会被放置在您无法访问的屏幕下方。我希望该按钮始终位于屏幕底部,并且您在清除按钮上方滚动浏览它的滚动视图。
    • 那么考虑使用固定分隔点的线性布局,将滚动视图嵌入到上部,按钮嵌入到下部,这样按钮位置就会固定,滚动视图可以流出分配的部分屏幕。
    • 我尝试在互联网上搜索固定分隔点,但没有找到任何内容?还没学过。无论如何我可以设置 ScrollView 以匹配父级,减去按钮?
    • @Emrys90 将 ScrollView 放在 LinearLayout 中,将 Button 放在 LinearLayout 中。要获得正确的高度,请将 Button LinearLayout 的高度设置为 wrap_content,并将 ScrollView LinearLayout 的高度设置为 0dp,并使用定义的 layout_weight(任意布局权重就足够了)。
    【解决方案2】:

    您可以为此使用 layout_weight。如果您将 layout_height 设置为“0px”,您可以使用 layout_weight 在兄弟项目之间分配剩余的父空间。

    在这种情况下,您希望按钮具有正常大小,并且滚动视图占据剩余空间。这应该给你一个大致的想法:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" >
    
        <ScrollView
         android:layout_width="fill_parent"
         android:layout_height="0px"
         android:layout_weight="1" >
    
            <TableLayout
             android:layout_width="fill_parent"
             android:layout_height="wrap_content" />
    
        </ScrollView>
    
        <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
    
    </LinearLayout>
    

    【讨论】:

    • 谢谢。这基本上是上面的建议,并且有效。
    【解决方案3】:

    我以前在我的项目中这样做过。这是我的 xml 代码。您可以根据自己的使用情况进行修改。

      <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_height="wrap_content" android:layout_width="fill_parent">
         <TextView android:id="@+id/TextView01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="This text view should act as header  " />
         <ScrollView android:layout_marginBottom="50dip" android:id="@+id/ScrollView01" android:layout_height="wrap_content" android:layout_width="fill_parent">
              <RadioGroup android:id="@+id/RadioGroup01" android:layout_width="wrap_content" android:layout_height="wrap_content">
                   <RadioButton android:id="@+id/RadioButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />
                   <RadioButton android:id="@+id/RadioButton11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />       
              </RadioGroup>
         </ScrollView>
         <RelativeLayout android:layout_marginTop="-50dip" android:gravity="bottom" android:layout_height="wrap_content" android:layout_width="fill_parent">
            <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1">
             <TableRow>
            <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="One"/>
            <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Two" android:layout_gravity="center_vertical"/>
            <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Three" android:layout_gravity="right"/>
            </TableRow>
            </TableLayout>
         </RelativeLayout>
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-03
      • 2014-04-26
      • 2021-08-11
      • 2010-10-28
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多