自动滚动发生在ScrollView上,并且没有通过RelativeLayout.LayoutParams降低边距

时间:2019-01-30 23:52:01

标签: java android

我正在尝试在Claims中显示10个绿色框,并且遇到两个问题。我已经通过IsInRoleAsync定义了下边距,但是它不起作用。另一个问题是我正在使用LinearLayout通过params.setMargins(0, 0, 0, 100)插入10个绿色框,并且在插入MainActivity.java时显示滚动条在底部。因此,当应用打开时,屏幕上会显示第10个绿色框,我希望第1个绿色框出现,因此如何关闭此自动滚动。

.addView()

ScrollView

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:orientation="vertical">
        </LinearLayout>
    </ScrollView>
</android.support.constraint.ConstraintLayout>

1 个答案:

答案 0 :(得分:1)

由于你定义你的意见要在“内容”添加即LinearLayout中如此创建的LayoutParams是线性的,以及这将解决这个问题。其余相同。

这是我为您所做的更改:(在您的java类中)

LinearLayout content = findViewById(R.id.content);
for (int x=0;x<10;x++) {
        RelativeLayout element = new RelativeLayout(this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 400);
        params.setMargins(0, 0, 0, 100); // now should work
        element.setLayoutParams(params);
        element.setBackgroundResource(R.color.green);
        content.addView(element);
    }

xml文件不需要改变

另外,当我打开应用程序时,滚动视图应位于顶部。