Android中文本的自动垂直滚动

时间:2013-11-23 06:27:29

标签: javascript android html css

我知道这是本网站上一个备受争议的话题,之前已经多次询问过。但到目前为止的所有回复都没有太大帮助。

基本上我要做的是创建一个包含信息的textField。就像反恐精英中的控制台一样。我想要一个允许用户输入的文本输入框。我希望能够动态地将文本行添加到上面提到的文本框中,我希望它能够滚动到底部。因此,最新的文本条目或添加的文本始终位于底部。但我仍然可以向上滚动并查看旧条目。

所以基本上就像反恐精英控制台一样。或任何其他游戏文本控制台:

http://www.counter-strike-source-tips.com/images/counter-strike-source-binding.jpg

这是一个图像作为例子^^

非常感谢你。我花了两天时间......

这是我到目前为止所尝试的内容:

  

滚动查看   文本滚动垂直条

但似乎没有任何内容可以自动向下滚动到最新条目。

这是我的错误XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/shipName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginBottom="10dp"
    android:text="Ship Name"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TableLayout
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/shipName" >

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/upgrade2Name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="   Speed:" />

        <TextView
            android:id="@+id/speedActual"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/shipDistance"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/shipName"
            android:layout_below="@+id/upgrade2Name"
            android:text="   Distance:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <TextView
            android:id="@+id/distanceActua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/shipDistance"
            android:layout_toRightOf="@+id/shipName"
            android:text="0" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/shipLocation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/shipName"
            android:layout_below="@+id/shipDistance"
            android:text="   Location:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <TextView
            android:id="@+id/locationActual"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/shipDistance"
            android:layout_toRightOf="@+id/shipName"
            android:text="Earth - Launch Station" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/shipFuel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/shipLocation"
            android:layout_below="@+id/shipLocation"
            android:text="   Fuel:" />

        <ProgressBar
            android:id="@+id/fuelBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/statusActual"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@+id/shipName" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/shipStatus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/shipFuel"
            android:layout_below="@+id/shipFuel"
            android:text="   Status:" />

        <TextView
            android:id="@+id/statusActual"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/data"
            android:layout_toRightOf="@+id/shipName"
            android:text="Ready for Launch" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/data"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/shipStatus"
            android:layout_below="@+id/shipStatus"
            android:text="   Data:" />

        <TextView
            android:id="@+id/vehicleInfo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/data"
            android:layout_alignBottom="@+id/data"
            android:layout_toRightOf="@+id/shipName"
            android:text="0" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/researchPoints"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/data"
            android:layout_below="@+id/data"
            android:text="   Research Points:   " />

        <TextView
            android:id="@+id/vehicleMoney"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/vehicleInfo"
            android:layout_toRightOf="@+id/shipName"
            android:text="0" />
    </TableRow>

    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </TableRow>
</TableLayout>

<LinearLayout
    android:id="@+id/buttons"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center_horizontal"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/launchButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/upgradeButton"
        android:layout_alignBottom="@+id/upgradeButton"
        android:layout_centerHorizontal="true"
        android:text="Launch" />

    <Button
        android:id="@+id/upgradeButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="14dp"
        android:text="Upgrade" />
</LinearLayout>

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/main"
    android:layout_marginLeft="40dp"
    android:layout_marginTop="38dp" >

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

        <TextView
            android:id="@+id/newsFeed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollbars="vertical"
            android:maxLines="10"
            android:text="newsfeed" />

    </LinearLayout>
</ScrollView>

newsFeed应该是滚动发生的地方:

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

        <TextView
            android:id="@+id/newsFeed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollbars="vertical"
            android:maxLines="10"
            android:text="newsfeed" />

    </LinearLayout>
</ScrollView>

再次感谢你。

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

scroll.fullScroll(View.FOCUS_DOWN);

ScrollView scrollView = (ScrollView)findViewById(R.id.scroll);
scrollView.scrollTo(0, scrollView .getBottom());

语法:

public void scrollTo (int x, int y)

设置视图的滚动位置。这将导致对onScrollChanged(int,int,int,int)的调用,并且视图将失效。

参数:

x:滚动到

的x位置

y:滚动到

的y位置

http://developer.android.com/reference/android/view/View.html#scrollTo%28int,%20int%29