开发者

Making TextView scrollable without knowing max lines

I want to make my TextView vertically scrollable. I have read "Making TextView Scrollable in Android" but since I don't know the size of the screen of the final device, I can't know which value should be set for maximum lines.

Is there any other way, so it gets the scrolling for any screen size?

My XML looks like this:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ScrollView
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:layout_weight="1.0">
        <TextView
            android:id="@+id/consola"
            android:layout_width="fill_parent" 
            android:layout_height="match_parent"/>
    </ScrollView>

    <EditText 
        android:id="@+id/comando"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.0"/>

    <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.0">

        <Button
            android:text="Conectar"
            android:id="@+id/boton_conectar"
            android:layout_width="wrap_content"
            android:layout_weight="0.5"
            android:layout_height="wrap_content">
        </Button>
        <Button
            android:text="Enviar"
            android:id="@+id/boton_enviar"
            android:layout_width="wrap_content"
            android:layout_weight="0.5"
            android:开发者_Go百科layout_height="wrap_content">
        </Button>
    </LinearLayout>
</LinearLayout>


Look, here the structure of my XML layout with scroll:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:scrollbars="vertical" 
        android:visibility="visible">

<LinearLayout 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    .....
    //your sub-widgets
    .....
</LinearLayout>
</ScrollView>

As for me, works fine.


If you do not know number of lines (moreover, it could vary if soft input method are shown or not), you should use RelativeLayout to place you widget like TextView. And then connect both (it's critical, not one but both) top and bottom edges of it to parent withandroid:layout_alignParentTop and android:layout_alignParentBottom attibutes, or neighbors with android:layout_above and android:layout_below attributes.

After both sides are connected to other widgets, android will recalculate size of TextView and scroller properly, even if you change orientation or show/hide soft keyboard.


ScrollView is only allowed to have one sub widget.

You should put the linearlayout inside of the scroll view. and set the textview inside of the linear layout.


Put the TextView inside ScrollView with height = MATCH_PARENT

try:

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

    <ScrollView
        android:layout_width="0dp" 
        android:layout_height="wrap_content"
        android:fillViewport="true"
        android:layout_weight="1.0">
        <TextView
            android:id="@+id/consola"
            android:layout_width="fill_parent" 
            android:layout_height="match_parent"/>
    </ScrollView>

    <EditText 
        android:id="@+id/comando"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
       />

    <LinearLayout
    android:orientation="horizontal"
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">

        <Button
            android:text="Conectar"
            android:id="@+id/boton_conectar"
            android:layout_width="wrap_content"
            android:layout_weight="0.5"
            android:layout_height="wrap_content">
        </Button>
        <Button
            android:text="Enviar"
            android:id="@+id/boton_enviar"
            android:layout_width="wrap_content"
            android:layout_weight="0.5"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
</LinearLayout>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜