如何在Android的RelativeLayout中使用ScrollView?

时间:2019-01-06 20:29:37

标签: java android

  • 我试图将多个TextView动态地添加到我的RelativeLayout中,而在这种情况下,当屏幕上充满文本时,滚动不会开始。关于如何使其可滚动的任何想法? / p>

  • 它看起来像这样:https://imgur.com/a/a7AnOQV(而且,当我们在使用它时,如何使fab按钮为0%透明?我不明白为什么您可以通过按钮看到文本):(

  • 我尝试使其工作的一种方法是使ScrollView成为父布局(但它将按我的按钮在屏幕的顶部),但是滚动有效(但是idk如何将按钮按回屏幕的底部)屏幕上),还尝试了在Stackoverflow上找到的其他答案,但似乎没有任何帮助。我整天都在尝试修复该死的Scroll。

XML代码:

<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/relativeLayoutId"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".PostDataFragment">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:fillViewport="true"
        android:scrollbars="vertical"
        android:id="@+id/scrollViewId">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fillViewport="true">
            <TextView
                android:id="@+id/row0"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:text="TextView" />
        </RelativeLayout>
    </ScrollView>


    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinatorLayoutId"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fabtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginEnd="16dp"
            android:layout_marginBottom="16dp"
            android:clickable="true"
            android:src="@drawable/baseline_add_white_24dp"
            app:backgroundTint="@color/colorPrimary"
            app:fabSize="normal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />

        <LinearLayout
            android:id="@+id/pictureLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginEnd="24dp"
            android:layout_marginBottom="90dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView2"
                style="@style/TextAppearance.AppCompat.Title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginRight="5dp"
                android:text="New Picture" />

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fabPicture"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:clickable="true"
                android:src="@drawable/baseline_insert_photo_white_24dp"
                app:fabSize="mini" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/textLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_gravity="bottom|end"
            android:layout_marginEnd="24dp"
            android:layout_marginBottom="150dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/textView"
                style="@style/TextAppearance.AppCompat.Title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="5dp"
                android:layout_marginRight="5dp"
                android:text="New Paragraph" />

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fabText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:clickable="true"
                android:src="@drawable/baseline_notes_white_24dp"
                app:fabSize="mini"
                tools:layout_editor_absoluteX="144dp"
                tools:layout_editor_absoluteY="320dp" />
        </LinearLayout>
    </android.support.design.widget.CoordinatorLayout>
</RelativeLayout>

Java片段文件(在onCreateView内部):

parentRLayout = (RelativeLayout) v.findViewById(R.id.relativeLayoutId);

在Java片段文件中的按钮侦听器内部->当按钮处于 单击,然后将文本添加到对话框中,并且当fabText按钮为 单击并在屏幕上添加文本->下面的代码行:                              parentRLayout.addView(createNewTextView(paragraphText.getText().toString(), 0, 5, 5));

//Function that returns a TextView (in the same Java Fragment Class)
TextView createNewTextView(String text, int alignment, int margin, int padding){
    TextView newDynamicTextView = new TextView(getActivity());

    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT
    );
    layoutParams.addRule(RelativeLayout.BELOW, currentId);
    newDynamicTextView.setLayoutParams(layoutParams);

    newDynamicTextView.setId(TextView.generateViewId());

    currentId = newDynamicTextView.getId();
    Log.d("currentId", ""+currentId);
    newDynamicTextView.setText(text);

    Log.d("newDynamic:", newDynamicTextView.getText().toString());
    return newDynamicTextView;
}

编辑: 我设法使它起作用。这个想法是将CoordinatorLayout作为根(父)布局,并在其中包含一个RelativeLayout内部的ScrollView。这些按钮在ScrollView(位于其下方)的外部,因此它们不会滚动。

1 个答案:

答案 0 :(得分:0)

我的一分钱。

它看起来像这样:https://imgur.com/a/a7AnOQV(而且,当我们在使用它时,如何使fab按钮为0%透明?我不明白为什么您可以通过按钮看到文本)

请注意,视图是根据其在xml布局中的顺序绘制的。

  

因为树是经过预定的遍历的,所以这意味着父母将   在他们的孩子之前(即后面)被吸引   它们在树中出现的顺序。

https://developer.android.com/guide/topics/ui/how-android-draws