【问题标题】:android layout with automatic scrollview带有自动滚动视图的android布局
【发布时间】:2012-04-27 09:31:44
【问题描述】:

我在我的 android main.xml 文件中有如下.. 当我运行它时显示一些异常,但在图形视图中的 main.xml 中它没有显示任何错误..
以下是我在 Linearlayout 中的代码

      <ScrollView android:id="@+id/ScrollView01" 
        android:layout_width="fill_parent" 
        android:layout_height="match_parent">

          <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_gravity="top"
            android:layout_height="match_parent">       

              <TextView android:layout_width="fill_parent"
                       android:layout_height="wrap_content"
                       android:layout_gravity="center"
                       android:text="UserName"/>

               <EditText android:id="@+id/username"
                       android:layout_width="fill_parent"
                       android:layout_height="wrap_content"
                       android:text=""/>                              
           <Button
               android:id="@+id/login_button"
               android:layout_width="60dp"
               android:layout_height="30dp"
               android:text="login"/>
        </LinearLayout>

         <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_gravity="top"
            android:layout_height="match_parent">       

              <TextView android:layout_width="fill_parent"
                       android:layout_height="wrap_content"
                       android:layout_gravity="center"
                       android:text=""/>

               <EditText android:layout_width="fill_parent"
                       android:layout_height="wrap_content"
                       android:text=""/>                              
           <Button
               android:layout_width="60dp"
               android:layout_height="30dp"
               android:text="@string/login_btn"/>
        </LinearLayout>
    </ScrollView>

【问题讨论】:

    标签: android


    【解决方案1】:

    ScrollView 应该有只有一个孩子。

    【讨论】:

      【解决方案2】:

      ScrollView 应该只有一个孩子。在您的示例中,您在滚动视图中放置了 2 个线性布局,这导致错误.. 将 2 个线性布局放在 1 个线性布局内,并将整个东西放在滚动视图中。它会工作..

          <ScrollView android:id="@+id/ScrollView01" 
              android:layout_width="fill_parent" 
              android:layout_height="match_parent">
                   <LinearLayout
                  android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_gravity="top"
                  android:layout_height="match_parent">  
                            <LinearLayout
                              android:orientation="vertical"
                              android:layout_width="fill_parent"
                              android:layout_gravity="top"
                              android:layout_height="match_parent">       
      
                                <TextView android:layout_width="fill_parent"
                                         android:layout_height="wrap_content"
                                         android:layout_gravity="center"
                                         android:text="@string/UserNameText"/>
      
                                 <EditText
                                         android:id="@+id/username"
                                         android:layout_width="fill_parent"
                                         android:layout_height="wrap_content"
                                         android:text="@string/UserNameText"/>                              
                             <Button
                                 android:id="@+id/login_button"
                                 android:layout_width="60dp"
                                 android:layout_height="30dp"
                                 android:text="@string/login_btn"/>
                          </LinearLayout>
      
                           <LinearLayout
                              android:orientation="vertical"
                              android:layout_width="fill_parent"
                              android:layout_gravity="top"
                              android:layout_height="match_parent">       
      
                                <TextView android:layout_width="fill_parent"
                                         android:layout_height="wrap_content"
                                         android:layout_gravity="center"
                                         android:text="@string/UserNameText"/>
      
                                 <EditText
                                         android:id="@+id/username"
                                         android:layout_width="fill_parent"
                                         android:layout_height="wrap_content"
                                         android:text="@string/UserNameText"/>                              
                             <Button
                                 android:id="@+id/login_button"
                                 android:layout_width="60dp"
                                 android:layout_height="30dp"
                                 android:text="@string/login_btn"/>
                          </LinearLayout>
              </LinearLayout>
          </ScrollView>
      

      【讨论】:

      • 您仍然需要更改子视图的高度。它们不能都是match_parent 并且永远不应该在 ScrollView 中设置为该值。他们应该是wrap_content
      【解决方案3】:

      ScrollViews 只能包含一个子视图。将两个 LinearLayout 包装在另一个 LinearLayout 中。

      您还将两个线性布局的高度都设置为match_parent。这在滚动视图中不起作用。它们都应该设置为wrap_content

      【讨论】:

        【解决方案4】:

        试试这个 xml 来解决你的问题

        <LinearLayout
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical">
           <ScrollView android:id="@+id/ScrollView01" 
                android:layout_width="fill_parent" 
                android:layout_height="match_parent">
        
                  <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="fill_parent"
                    android:layout_gravity="top"
                    android:layout_height="match_parent">       
        
                      <TextView android:layout_width="fill_parent"
                               android:layout_height="wrap_content"
                               android:layout_gravity="center"
                               android:text="UserName"/>
        
                       <EditText android:id="@+id/username"
                               android:layout_width="fill_parent"
                               android:layout_height="wrap_content"
                               android:text=""/>                              
                   <Button
                       android:id="@+id/login_button"
                       android:layout_width="60dp"
                       android:layout_height="30dp"
                       android:text="login"/>
                </LinearLayout>
        
                 <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="fill_parent"
                    android:layout_gravity="top"
                    android:layout_height="match_parent">       
        
                      <TextView android:layout_width="fill_parent"
                               android:layout_height="wrap_content"
                               android:layout_gravity="center"
                               android:text=""/>
        
                       <EditText android:layout_width="fill_parent"
                               android:layout_height="wrap_content"
                               android:text=""/>                              
                   <Button
                       android:layout_width="60dp"
                       android:layout_height="30dp"
                       android:text="@string/login_btn"/>
                </LinearLayout>
            </ScrollView>
         </LinearLayout>
        

        感谢更多详情点击此链接Can we use a ScrollView inside a LinearLayout?

        【讨论】:

        • 那行不通。 LinearLayout 需要在 Scrollview 内部而不是在其外部。并且子 LinearLayouts 不能将高度设置为 match_parent
        【解决方案5】:

        Scroll View 只能有一个 Direct 子级..

        <?xml version="1.0" encoding="utf-8"?>
        <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_width="fill_parent"
        android:layout_height="match_parent" >
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_gravity="top"
            android:orientation="vertical" >
        
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_gravity="top"
                android:orientation="vertical" >
        
                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="UserName" />
        
                <EditText
                    android:id="@+id/username"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="" />
        
                <Button
                    android:id="@+id/login_button"
                    android:layout_width="60dp"
                    android:layout_height="30dp"
                    android:text="login" />
            </LinearLayout>
        
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_gravity="top"
                android:orientation="vertical" >
        
                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="" />
        
                <EditText
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="" />
        
                <Button
                    android:layout_width="60dp"
                    android:layout_height="30dp"
                    android:text="@string/login_btn" />
            </LinearLayout>
        </LinearLayout>  </ScrollView>
        

        【讨论】:

          【解决方案6】:

          ScrollView 应该只有一个孩子。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-04-12
            • 1970-01-01
            • 1970-01-01
            • 2013-11-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多