Делаем TextView прокручиваемым, не зная максимум строк - PullRequest
3 голосов
/ 24 сентября 2011

Я хочу сделать мой TextView вертикально прокручиваемым.Я прочитал « Создание TextView Scrollable в Android », но так как я не знаю размер экрана конечного устройства, я не могу знать, какое значение следует установить для максимальных строк.

Есть ли другой способ, чтобы он получал прокрутку для экрана любого размера?

Мой XML выглядит так:

<?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:layout_height="wrap_content">
        </Button>
    </LinearLayout>
</LinearLayout>

Ответы [ 4 ]

4 голосов
/ 24 сентября 2011

Смотри, вот структура моего XML-макета с прокруткой:

<?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>

Как по мне, отлично работает.

1 голос
/ 07 октября 2012

Если вы не знаете количество строк (более того, оно может отличаться, если отображается мягкий метод ввода или нет), вы должны использовать RelativeLayout, чтобы разместить ваш виджет как TextView.А затем соедините оба (важно, не один, а оба ) верхнего и нижнего края его с родительским элементом с android:layout_alignParentTop и android:layout_alignParentBottom атрибутами или соседями с android:layout_above и android:layout_below атрибутами.

После того, как обе стороны подключены к другим виджетам, Android правильно пересчитает размер TextView и скроллера, даже если вы измените ориентацию или покажете / скроете программную клавиатуру.

0 голосов
/ 24 сентября 2011

ScrollView разрешено иметь только один вспомогательный виджет.

Вы должны поместить линейное расположение внутри вида прокрутки. и установите textview внутри линейного макета.

0 голосов
/ 24 сентября 2011

Поместите TextView внутри ScrollView с высотой = 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>
...