5

我们的应用程序(适用于 Android的 WordPress)为新的帖子视图使用滚动视图,用户可以在其中输入他们的新博客帖子。此视图上有很多字段,包括用于发布内容字段的大型 EditText。

看来,当 EditText 在 ScrollView 中时,ScrollView 会接管滚动操作,因此如果用户正在撰写大型帖子,则无法在 EditText 区域内滚动。可以做些什么使滚动在 EditText 和 ScrollView 中都起作用?

这是此视图的布局 xml,任何帮助将不胜感激!需要滚动的EditText是@id/content:

    <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="none"
    android:background="#FFF5F5F5">

<RelativeLayout android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:padding="10dip"
                > 
    <RelativeLayout android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                android:background="@drawable/content_bg"
                android:id="@+id/section1">
    <TextView android:id="@+id/l_section1" 
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:text="Post Content"
              style="@style/WordPressSectionHeader"/>
    <TextView android:id="@+id/l_title" 
              android:layout_below="@id/l_section1"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:text="@string/post_title"/>

    <EditText android:id="@+id/title" 
              android:minHeight="40dip"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:background="@android:drawable/editbox_background"
              android:autoText="true"
              android:capitalize="sentences"
              android:layout_below="@id/l_title"/>

    <TextView android:id="@+id/l_content" 
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:text="@string/post_content"
              android:layout_below="@id/title"/>

    <EditText android:id="@+id/content"
              android:gravity="top" 
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:background="@android:drawable/editbox_background"
              android:minLines="5"
              android:maxLines="5"
              android:autoText="true"
              android:capitalize="sentences"
              android:layout_below="@id/l_content"/>

<Button  
            android:id="@+id/bold"
            android:background="@drawable/wp_button_small"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:layout_below="@id/content"
            android:textStyle="bold"
            android:textSize="22dip"
            android:text="B" />           
<Button
            android:id="@+id/em"
            android:background="@drawable/wp_button_small"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/bold"
            android:layout_toRightOf="@id/bold"
            android:textStyle="italic"
            android:textSize="22dip"
            android:text="I " />

<Button
             android:id="@+id/link" 
             android:background="@drawable/wp_button_small"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/em"
            android:layout_toRightOf="@id/em"
            android:textSize="22dip"
            android:textColor="#006699"
            android:text="link" />  

<Button
            android:id="@+id/bquote"
            android:background="@drawable/wp_button_small"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content" 
            android:layout_alignTop="@id/link"
            android:layout_toRightOf="@id/link"
            android:textSize="22dip"
            android:text="b-quote" />          
              </RelativeLayout>
<RelativeLayout android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:background="@drawable/content_bg"
                android:id="@+id/section2"
                android:layout_marginTop="10dip"
                android:layout_below="@id/section1">             
    <TextView android:id="@+id/l_media"
              android:layout_marginBottom="6dip"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:text="Media"
              style="@style/WordPressSectionHeader"/>               
<Button
            android:id="@+id/addPictureButton"
            android:layout_marginTop="4dip"
            android:background="@drawable/wp_button_small"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:layout_below="@id/l_media" 
            android:textSize="18dip"
            android:text="@string/add"/>

<Button
            android:id="@+id/clearPicture"
            android:background="@drawable/wp_button_small"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content" 
            android:visibility="gone"
            android:textSize="18dip"
            android:layout_alignBottom="@id/addPictureButton"
            android:layout_toRightOf="@id/addPictureButton"
            android:text="@string/clear" />

            <GridView   
                    android:id="@+id/gridView"   
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:gravity="fill_vertical"
                    android:numColumns="3"
                    android:visibility="gone"
                    android:layout_below="@id/addPictureButton">             
               </GridView>
</RelativeLayout>
<RelativeLayout android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:background="@drawable/content_bg"
                android:id="@+id/section3"
                android:layout_marginTop="10dip"
                android:layout_marginBottom="10dip"
                android:layout_below="@id/section2"> 
                <TextView android:id="@+id/l_tags_categories"
              android:layout_marginBottom="6dip"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:text="Tags &amp; Categories"
              style="@style/WordPressSectionHeader"/>              
                   <TextView android:id="@+id/l_tags" 
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:layout_below="@id/l_tags_categories" 
              android:text="@string/tags_separate_with_commas"/>

    <EditText android:id="@+id/tags" 
              android:minHeight="40dip"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:background="@android:drawable/editbox_background"
              android:autoText="true"
              android:layout_below="@id/l_tags"/>

    <TextView android:id="@+id/l_category" 
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content" 
              android:text="@string/categories"
              android:layout_below="@id/tags"
              android:layout_marginTop="10dip"/>

  <Button
            android:id="@+id/selectCategories"
            android:background="@drawable/wp_button_small"
            android:layout_below="@id/l_category"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:textSize="18dip"
            android:text="@string/select_categories" />

     <TextView android:id="@+id/selectedCategories" 
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content"
              android:text="@string/selected_categories"
              android:layout_below="@id/selectCategories"/>        
 </RelativeLayout> 
  <RelativeLayout android:id="@+id/location_wrapper"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
                android:layout_below="@id/section3"
                android:layout_marginTop="-10dip">
  <RelativeLayout android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:background="@drawable/content_bg"
                android:id="@+id/section4"
                android:layout_marginTop="10dip"
                android:layout_marginBottom="10dip"
                android:layout_below="@id/section3"
                android:visibility="gone"> 
                <TextView android:id="@+id/l_location"
              android:layout_marginBottom="6dip"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:text="@string/location"
              style="@style/WordPressSectionHeader"/>
              <TextView android:id="@+id/locationText"
              android:layout_marginBottom="6dip"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:text="@string/loading"
              android:layout_below="@id/l_location"/> 
              <Button
            android:id="@+id/viewMap"
            android:background="@drawable/wp_button_small"
            android:layout_below="@id/locationText"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:textSize="18dip"
            android:text="View Map" />                                 
 </RelativeLayout> 
 </RelativeLayout>  
 <RelativeLayout android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:background="@drawable/content_bg"
                android:id="@+id/section5"
                android:layout_marginTop="10dip"
                android:layout_marginBottom="10dip"
                android:layout_below="@id/location_wrapper"> 
                <TextView android:id="@+id/l_status"
              android:layout_marginBottom="6dip"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:text="@string/status"
              style="@style/WordPressSectionHeader"/>                                       
    <CheckBox android:id="@+id/publish"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_below="@id/l_status"
            android:text="@string/publish"
            android:button="@drawable/wp_checkbox"
            /> 
 </RelativeLayout>            
<Button
            android:id="@+id/post"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:layout_below="@id/section5"
            android:layout_alignParentRight="true"
            android:textSize="18dip"
            android:background="@drawable/wp_button"
            android:text="@string/save" />
<Button
            android:id="@+id/upload"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:layout_alignBottom="@id/post"
            android:layout_toLeftOf="@id/post"
            android:textSize="18dip"
            android:background="@drawable/wp_button"
            android:text="@string/upload_now" />            
</RelativeLayout>
</ScrollView>
4

3 回答 3

2

到目前为止,从我在论坛上看到的内容来看,在同一屏幕上拥有多个可滚动容器并不是一个好主意。现在,这些帖子通常是关于 listview 、 gridview 和 scrollview 的结合,但在我看来,最好的解决方案似乎是重新设计屏幕以避免这种情况。

于 2010-05-18T03:31:47.330 回答
1

如果您需要在同一屏幕上使用 edittext,请在初始化 edittext 后将其添加到您的 oncreate 方法中。这个对我有用。

    edittext.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.v("TAG", "CHILD TOUCH");

            // Disallow the touch request for parent scroll on touch of
            // child view
            if(event.getAction() == MotionEvent.ACTION_UP)
                scrollview.requestDisallowInterceptTouchEvent(false);
            else
                scrollview.requestDisallowInterceptTouchEvent(true);

            return false;
        }
    });

它的作用是说如果有人触摸了edittext然后禁用滚动视图。然后,一旦他们从编辑文本中抬起手指(一旦完成),就重新启用滚动视图。

于 2014-03-06T03:44:39.067 回答
-1

您可以尝试添加带有下划线的 ScrollView: android:fillViewport="true"然后android:minHeight="100dp在您的编辑文本中添加“”“。

于 2013-11-08T09:10:27.463 回答