Android滚动视图与键盘布局元素重叠。

4
我遇到了一个问题,我的滚动条与布局中的一个元素重叠。我希望滚动条出现在编辑框后面,如下图所示:enter image description here。当我将滚动条添加到xml文件的不同部分时,我收到了错误消息,这意味着滚动视图必须是根元素。因此,我的代码看起来像这样(当我觉得滚动视图应该出现在第一个线性布局和/或编辑框之后):
<?xml version="1.0" encoding="utf-8"?>
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/db1_root"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout style="@style/TitleBar">
        <ImageView style="@style/TitleBarLogo"
            android:contentDescription="@string/description_logo"
            android:src="@drawable/logo" />

        <ImageView style="@style/TitleBarSeparator" />
        <TextView style="@style/TitleBarText" />
        <ImageButton style="@style/TitleBarAction"
            android:contentDescription="@string/description_about"
            android:src="@drawable/about"
            android:onClick="onClickAbout" />
    </LinearLayout>

<LinearLayout
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <EditText 
        android:layout_width="match_parent" 
        android:id="@+id/status" 
        android:layout_height="wrap_content">
        <requestFocus></requestFocus>
    </EditText>
 <Button android:layout_width="wrap_content" android:text="Ok" android:textColor="@color/title_text" android:layout_gravity="center" android:background="@drawable/custom_button" android:layout_height="wrap_content"></Button>
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">
        <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="wrap_content" android:text="" android:id="@+id/updates" android:textSize="14dp" android:layout_height="wrap_content"></TextView>
    </LinearLayout>
    <TextView android:text="" android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
</LinearLayout>
</LinearLayout>
 </ScrollView>
4个回答

6
这个可能对你有用:android:scrollbarStyle="outsideOverlay",在<ScrollView>内设置。

我尝试了这个,但没有效果。我甚至尝试刷新我的资源并清理项目:<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbarStyle="outsideOverlay" android:fillViewport="true" > - user836200
移除 android:fillViewport 并查看发生了什么。 - Paresh Mayani
Paresh,我移除了android:fillViewPort后没有任何变化。ScrollView仍然与其他元素重叠。 - user836200
如果 android:paddingRight="10dp" 呢? - Paresh Mayani
1
你需要同时使用paddingoutsideoverlay,只使用其中一个将不会产生任何效果。 - chiliNUT

0

给你的LinearLayout或者ScrollView添加一些padding


添加填充(padding,paddingTop)并没有解决问题。你能具体说明一下吗? - user836200
通过向ScrollView添加填充(android:paddingRight="20dp")并使用android:scrollbarStyle="outsideOverlay",您可以将ScrollView内部的内容向内移动20dp,并在其外部绘制滚动条。 - Freddroid

0
我在与commonsguy (+1)聊天后弄清了这个问题。我误解了我收到的有关滚动视图和根元素的Android错误。据我理解,滚动视图只能有一个子元素。我的最初想法是滚动视图需要包围根元素(糟糕)。以下是修复方法:
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/db1_root"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout style="@style/TitleBar">
        <ImageView style="@style/TitleBarLogo"
            android:contentDescription="@string/description_logo"
            android:src="@drawable/logo" />

        <ImageView style="@style/TitleBarSeparator" />
        <TextView style="@style/TitleBarText" />
        <ImageButton style="@style/TitleBarAction"
            android:contentDescription="@string/description_about"
            android:src="@drawable/about"
            android:onClick="onClickAbout" />
    </LinearLayout>

<LinearLayout
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
    <EditText 
        android:layout_width="match_parent" 
        android:id="@+id/status" 
        android:layout_height="wrap_content">
        <requestFocus></requestFocus>
    </EditText>
 <Button 
    android:layout_width="wrap_content" 
    android:text="Go" 
    android:textColor="@color/title_text" 
    android:layout_gravity="center" 
    android:id="@+id/communitysubmit" 
    android:background="@drawable/custom_button" 
    android:layout_height="wrap_content">
 </Button>
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >
    <LinearLayout 
        android:layout_width="match_parent" 
        android:id="@+id/linearLayoutcommunity" 
        android:layout_height="wrap_content" 
        android:orientation="vertical">
     <TextView 
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:layout_width="wrap_content" 
        android:text="" 
        android:id="@+id/updates" 
        android:textSize="14dp" 
        android:layout_height="wrap_content">
    </TextView>
    </LinearLayout>
    </ScrollView>
    <TextView 
        android:text="" 
        android:id="@+id/test" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </TextView> 
</LinearLayout>
</LinearLayout>

-1

虽然有点晚,但我尝试了这个解决方案。

在滚动视图中放置一个线性布局,然后给线性布局添加边距。之后将您的内容放置在线性布局内。希望这能解决问题。

   <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical"
            >
            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:layout_marginStart="@dimen/_10sdp"
                android:layout_marginEnd="@dimen/_10sdp"
                >

               //your content here

              </androidx.appcompat.widget.LinearLayoutCompat>
   </androidx.core.widget.NestedScrollView>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接