Java 如何在Android中动态地拥有一个带有可滚动内容的固定标题?

Java 如何在Android中动态地拥有一个带有可滚动内容的固定标题?,java,android,android-layout,android-linearlayout,android-scroll,Java,Android,Android Layout,Android Linearlayout,Android Scroll,我以编程方式创建了一个包含按钮的RelativeLayout。我还创建了一个滚动视图,其中包含一个线性布局,其中有10多个文本视图。我希望将相对长度调整为顶部对齐并固定。当有人试图向下滚动时,我希望所有的文本视图都位于固定的相对视图之后。我希望那个按钮始终可见。使用此代码时,将不显示RelativeLayout和按钮。我哪里错了? 相对长度(固定) -按钮 线性布局 -滚动视图 -文本视图 -+其他10个文本视图 这是我的密码: @Override protected void onCreate

我以编程方式创建了一个包含按钮的
RelativeLayout
。我还创建了一个
滚动视图
,其中包含一个
线性布局
,其中有10多个
文本视图
。我希望将
相对长度调整为顶部对齐并固定。当有人试图向下滚动时,我希望所有的
文本视图都位于固定的
相对视图之后。我希望那个按钮始终可见。使用此代码时,将不显示
RelativeLayout
和按钮。我哪里错了?

相对长度(固定)
-按钮
线性布局
-滚动视图
-文本视图
-+其他10个文本视图
这是我的密码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final RelativeLayout relativeLayout = new RelativeLayout(this);
    RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    relativeLayout.setLayoutParams(relativeLayoutParams);
    this.setContentView(relativeLayout);

    final Button restartButton = new Button(this);
    restartButton.setText(R.string.restartButton);
    LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    restartButton.setLayoutParams(buttonParams);
    relativeLayout.addView(restartButton);

    ScrollView scrollView = new ScrollView(this);
    this.setContentView(scrollView);

    final LinearLayout linearLayout = new LinearLayout(this);
    LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    linearLayout.setLayoutParams(linearLayoutParams);
    linearLayout.setOrientation(linearLayout.VERTICAL);
    scrollView.addView(linearLayout);

    TextView textView1 = new TextView(this);
    testTitle.setText(R.string.text_view1);
    linearLayout.addView(textView1);

    // + other 10 text views
}

谢谢

在代码中,用ScrollView替换RelativeLayout。只需先将一些线性布局设置为contentView,然后通过
addView(RelativeLayout)
将您的RelativeLayout放在那里,并通过
addView(scrollView)

编辑:

您的新代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final LinearLayout mainLinearLayout = new LinearLayout(this);
        LinearLayout.LayoutParams mainLinearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        mainLinearLayout.setLayoutParams(mainLinearLayoutParams);
        mainLinearLayout.setOrientation(LinearLayout.VERTICAL);
        this.setContentView(mainLinearLayout);

        final RelativeLayout relativeLayout = new RelativeLayout(this);
        RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        relativeLayout.setLayoutParams(relativeLayoutParams);
        mainLinearLayout.addView(relativeLayout);

        final Button restartButton = new Button(this);
        restartButton.setText(R.string.restartButton);
        LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        restartButton.setLayoutParams(buttonParams);
        relativeLayout.addView(restartButton);

        ScrollView scrollView = new ScrollView(this);
        mainLinearLayout.addView(scrollView);

        final LinearLayout linearLayout = new LinearLayout(this);
        LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        linearLayout.setLayoutParams(linearLayoutParams);
        linearLayout.setOrientation(linearLayout.VERTICAL);
        scrollView.addView(linearLayout);

        TextView textView1 = new TextView(this);
        testTitle.setText(R.string.text_view1);
        linearLayout.addView(textView1);

        // + other 10 text views
    }

编辑2:将第一个linearLayout重命名为mainLinearLayout根据有关代码的注释

,我将第一个
linearLayout
重命名为
mainLinearLayout
,因为有两个布局同名。最后,它工作得很好。非常感谢你!