当前位置: 首页 > 知识库问答 >
问题:

adjustResize不适用于片段布局内的EditText视图

冷正信
2023-03-14

我有一个全屏活动,其中某些布局元素隐藏起来,让位于容器内的一个片段(FrameLayout)。布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/home_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/closing_background"
    android:orientation="vertical"
    tools:context="com.example.activities.MainActivity">

        <FrameLayout
            android:id="@+id/dim"
            android:alpha="0"
            android:fitsSystemWindows="true"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/dimBg" />

        <RelativeLayout
            android:id="@+id/header_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="48dp"
            android:layout_alignParentTop="true">

            <ImageView
                android:id="@+id/menu"
                android:visibility="visible"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_marginStart="24dp"
                android:background="@drawable/ic_menu_black_24dp"/>

            <ImageView
                android:id="@+id/logo_img"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:scaleType="fitXY"
                android:src="@drawable/ic_app_logo_black" />

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/header_layout"
            android:orientation="vertical"
            android:layout_marginTop="26dp">

            <FrameLayout
                android:id="@+id/fragmentContainer"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        </RelativeLayout>

        <LinearLayout
           android:id="@+id/first_layout"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_below="@id/header_layout"
           android:visibility="gone"
           android:orientation="vertical"
           android:layout_marginTop="93dp">

             <--other layout elements here-->
        </LinearLayout>
</RelativeLayout>

片段布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/parentLayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:background="@android:color/transparent">

        <RelativeLayout
            android:id="@+id/rootView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clipChildren="false">

            <TextView
                android:id="@+id/description"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="6dp"
                android:layout_alignParentTop="true"
                android:textSize="18sp"
                android:lineSpacingMultiplier="1.5"/>

            <com.example.MyCustomRecyclerView
                android:id="@+id/customRecyclerView"
                android:layout_below="@id/description"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="16dp"
                android:layout_marginStart="16dp"
                android:layout_marginEnd="16dp"
                android:layout_marginBottom="72dp"
                android:clipToPadding="false">

            </com.example.MyCustomRecyclerView>

            <include layout="@layout/input_view"
                tools:visibility = "gone"/>

        </RelativeLayout>

</ScrollView>

如您所见,在我的片段布局中,我包含了另一个名为input_view的布局。其布局文件如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content_slide_up_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="8dp"
    android:paddingRight="8dp"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.activities.MainActivity"
    tools:showIn="@layout/activity_main">

    <RelativeLayout
        android:id="@+id/slideResponseView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="26dp"
        android:background="@drawable/rounded_up_corners_bg">

        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/pullDownArrow"
            android:text="@string/response_view_title"
            android:gravity="center_horizontal"
            android:layout_marginTop="16dp"
            android:textAllCaps="false"/>

        **<EditText
            android:id="@+id/response_view_input"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/title"
            android:layout_margin="10dp"
            android:gravity="top"
            android:padding="10dp"/>**

        <ImageView

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            app:srcCompat="@drawable/ic_keyboard_arrow_down_black_24dp"
            android:id="@+id/pullDownArrow"
            android:layout_marginTop="15dp"/>

    </RelativeLayout>

</RelativeLayout>

这是从以下来源获得的幻灯片面板:https://github.com/mancj/SlideUp-Android,它主要是一个编辑文本视图,在回收器视图项目的单击事件上向上滑动。在纵向模式下,滑块面板占据了屏幕空间的 2/3(我的应用仅是纵向)。现在,当我单击此滑块面板上的EditText视图以输入任何文本时,我希望此视图在软键盘从其下方打开时调整大小。我尝试了SO上建议的一些事情,例如使用滚动视图包装根布局,但仍然不起作用。

此外,清单文件中的活动包括以下内容:

android:windowSoftInputMode="adjustResize"

如上所述,该活动是一个全屏活动,我正在使用以下代码以编程方式处理:

requestWindowFeature(Window.FEATURE_NO_TITLE);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
                    WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

View decorView = getWindow().getDecorView();

int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
decorView.setSystemUiVisibility(uiOptions);

有人能在这里指导我吗?如果问题或我的部分代码不清楚,请告诉我,这样我就可以详细说明一下。

谢谢,

AB型血

共有1个答案

鲁博瀚
2023-03-14

用NestedScrollView替换ScrollView。还要用ConstraintLayout替换RelativeLayout。其他代码都可以。

 类似资料:
  • 问题内容: 我在其中动态添加了许多内容。我面临的问题是,每当我单独将onTouch侦听器应用于其时,它都会检测到触摸,但是当我向相对布局中添加触摸时,它永远不会响应。 此代码可以很好地检测触摸事件: 但是,当我在myRelativeLayout中添加所有这些TextViews时: 现在,永远不会调用onTouchListener。为什么呢? 问题答案: 导致您的布局,而不是触发触摸事件。尝试删除它

  • 我试图填充一个相对的布局与4卡视图在它。每个cardview由一个图像和一个文本视图组成。我将所有卡片视图包装在一个相对布局中,将相对布局包装在一个滚动视图中。不管用。如果我移除scrollview,它可以正常工作。尝试将scrollview放入相对布局中。但没有工作代码:

  • 我根据类似问题的答案修改了代码,但没有一个有效。我正在使用TabFragments和RecyclerViews。控制台显示错误“E/RecyclerView:No adapter attached;kipping layout”四次。 (当修改它也给了我错误java.lang.NullPointerException:试图调用虚方法'voidandroid.support.v7.widget.Re

  • 因此,下面的代码适用于一个活动,但当我使用onCreateView将其添加到一个片段中时,应用程序就会崩溃 Fragment公共类步骤扩展Fragment{ 12-13 15:17:15.062 984-984/com.stephenh.daytrack.daytrack.daytrackstephenh E/AndroidRuntime:致命异常:主进程:com.stephenh.daytrac

  • 我已经使用Android ADT几个星期了,我曾经通过转到:文件来创建新活动 当我选择“新建空白活动”并单击“下一步”时,会显示一个我必须填写的新表格,标题为“片段布局名称”。为什么这突然出现,有谁知道为什么我被迫创建一个片段布局,因为我甚至不想使用它。我还记得我的一个朋友说他大约一周前更新了他的SDK,他说他有同样的问题。我是否应该在XML文档加载后删除其中的片段,或者有没有一种方法可以禁用它,

  • 问题内容: 我正在尝试将-tag的内部元素与flexbox的居中对齐。但是Safari不会将它们居中。我可以将相同的样式应用于任何其他标签,并且可以按预期工作(请参见-tag)。仅按钮左对齐。 尝试使用Firefox或Chrome,您会发现其中的区别。 有什么我必须覆盖的用户代理样式?或对此问题有任何其他解决方案? 问题答案: 问题 在某些浏览器中,除了在和之间切换之外,该元素不接受对其值的更改。