1

我想在应用程序中有一个文本字段和一个可滚动的(包含可绘制的)。我希望文本视图在滚动时保持固定在屏幕上。我已经在我的活动文件中使用以下代码在滚动视图中呈现了绘制视图:

        drawView = new DrawView(this, height, width, SMD);
            drawView.setBackgroundColor(Color.WHITE);
            ScrollView scrollView = new ScrollView(this);
            scrollView.addView(drawView);
            setContentView(scrollView);

我看到了这个页面:

Android:如何向全屏滚动视图添加页脚?

为了防止您必须点击链接,他们建议使用 Manifest 条目,例如:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TableRow><TextView android:text="Text1"/></TableRow>
            <TableRow><TextView android:text="Text2"/></TableRow>
        </TableLayout>
        <RelativeLayout 
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView 
                android:text="@string/lorem_ipsum"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        </RelativeLayout>
        <LinearLayout 
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView
                android:text="Text3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <TextView
                android:text="Text4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        </LinearLayout>
    </LinearLayout>
</ScrollView>

阅读该页面时,我认为我可以使用上面超链接中列出的清单更改以及修改后的代码:

        drawView = new DrawView(this, height, width, SMD);
            drawView.setBackgroundColor(Color.WHITE);
            ScrollView scrollView = new ScrollView(this);
            scrollView.addView(drawView);
            setContentView(scrollView);
            TextView tv = new TextView(this);
            tv.setText("Hellow World Im running with no issue");
            setContentView(tv);

得到我想要的。但是,屏幕仅呈现滚动视图或 TextView(取决于最后调用哪一个)。我真的需要按照其他答案中的说明进行清单更改吗?我没有在当前清单中列出任何对象,例如 ScrollViews,但我无法想象这会导致问题。现在列出它们应该简单地定义它们与其他对象的行为方式,对吗?

4

3 回答 3

2

您所说的清单实际上是一个布局文件(正如山库所指出的)。您的项目可以包含任意数量的布局文件,但只需要并允许一个清单。您可以阅读AndroidManifest.xml这里的内容、原因和位置:AndroidManifest.xml 文件

试试这个 xml 代码来获得一个固定的TextView页脚,ScrollView上面有一个:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout 
        android:id="@+id/linear_layout_for_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/black"
        android:layout_alignParentBottom="true" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Some Text"
            android:textColor="@android:color/white"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceLarge" />

    </LinearLayout>

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/linear_layout_for_text"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/some_pic" />

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/another_pic" />

        </LinearLayout>

    </ScrollView>

</RelativeLayout>

您可以ImageViews向滚动容器添加任意数量。在上面的代码中,我添加了两个。这会产生以下结果:

活动开始时:

在此处输入图像描述

在用户垂直滚动一点之后

在此处输入图像描述

于 2013-07-29T05:26:44.343 回答
1

不,您不需要更改 xml 布局..您可以动态创建一个..

您的第二个setContentView删除了第一个,这就是您只有 testview 或 ScrollView 的原因。要执行您想要的操作,您需要添加一个容器,setContentView该容器本身可以容纳多个视图。

一个这样的容器是LinearLayout. 您必须创建它,将其方向设置为水平,并添加两个 TextView:

drawView = new DrawView(this, height, width, SMD);
drawView.setBackgroundColor(Color.WHITE);
ScrollView scrollView = new ScrollView(this);
scrollView.addView(drawView);
//  setContentView(scrollView);
TextView tv = new TextView(this);
tv.setText("Hellow World Im running with no issue");
// setContentView(tv);  

LinearLayout linear = new LinearLayout(this);
// Not necessary as it's the default but useful to know
linear.setOrientation(LinearLayout.HORIZONTAL); 
linear.addView(scrollView);
linear.addView(tv);


//set the text view as the activity layout
setContentView(linear);

希望这可以帮助!!

于 2013-07-29T04:57:39.763 回答
0
<LinearLayout>
      <LinearLayout>
            <TextView />
      </LinearLayout>
      <ScrollView>
           // Whatever you want to be scrolled put it here
      </ScrollView>
</LinearLayout>

如果您想动态添加视图到滚动视图,您可以使用滚动视图的 Id 并为此执行 scrollview.addView ..

于 2013-07-29T09:40:51.960 回答