Многострочный TextView в Android?



мне понравилось ниже в xml



<TableRow>
<TextView android:id="@+id/address1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:maxLines="4"
android:singleLine="false"
android:text="Johar Mor, Gulistan-e-Johar, Karachi" >
</TextView>
</TableRow>


Он не работает для multiline, и я использую TableLayout...



так в чем же ошибка, которую я здесь делаю?

888   15  

15 ответов:

если текст вы кладете в TextView коротко, он не будет автоматически расширяться до четырех строк. Если вы хотите TextView до всегда есть четыре строки независимо от длины текста в нем, установите :

<TextView
    android:id="@+id/address1"
    android:gravity="left"
    android:layout_height="fill_parent"
    android:layout_width="wrap_content"
    android:maxLines="4"
    android:lines="4"
    android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."></TextView>

вы можете сделать это с помощью TableRow, см. ниже код

<TableRow >
        <TextView
            android:id="@+id/tv_description_heading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:padding="8dp"
            android:text="@string/rating_review"
            android:textColor="@color/black"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tv_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:maxLines="4"`enter code here`
            android:padding="8dp"
            android:text="The food test was very good."
            android:textColor="@color/black"
            android:textColorHint="@color/hint_text_color" />
    </TableRow>

Я попытался прокомментировать один из ответов выше, но у меня недостаточно репутации.
Я просто подумал, что добавлю это, если вы используете:

android:inputType="textMultiLine"

затем представление перестает быть интерактивным. Я пытался получить многострочные текстовые просмотры в моем меню слайд-ящик, который, очевидно,должен реагировать на щелчки.

The android:singleLine="false" работал нормально, хотя.

мне не нравится ни один из ответов. Просто установить с помощью свойства inputType, и виджет TextView будет адаптироваться к его содержанию

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine"/>

тестируется на Nexus One (2.3) и Nexus 4 (4.4)

просто добавьте textview в ScrollView

<ScrollView
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:layout_marginLeft="15dp"
           android:layout_marginRight="15dp"
           android:layout_marginTop="20dp"
           android:fillViewport="true">

           <TextView
               android:id="@+id/txtquestion"
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="@drawable/abs__dialog_full_holo_light"
               android:lines="20"
               android:scrollHorizontally="false"
               android:scrollbars="vertical"
               android:textSize="15sp" />

       </ScrollView>

просто поместите '\n ' внутри вашего текста... никаких дополнительных атрибутов не требуется :)

          <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Pigeon\nControl\nServices"
            android:id="@+id/textView5"
            android:layout_gravity="center"
            android:paddingLeft="12dp"/> 

мне не нравится решение, которое вынуждает количество строк в текстовом виде. Я скорее предлагаю вам решить его с помощью решения предлагаемый здесь. Как я вижу, OP также борется с тем, чтобы текстовое представление выглядело как правильное в таблице и shrinkColumns Это правильная директива, чтобы пройти, чтобы достичь того, что требуется.

попробуйте работать с EditText, сделав его unclickable и unfocusable, также вы можете отобразить полосу прокрутки и удалить нижнюю панель EditText.
Вот пример:

<EditText
android:id="@+id/my_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_parent"
android:inputType="textMultiLine"                   <!-- multiline -->
android:clickable="false"                         <!-- unclickable -->
android:focusable="false"                         <!-- unfocusable -->
android:scrollbars="vertical"     <!-- enable scrolling vertically -->
android:background="@android:color/transparent"   <!-- hide the underbar of EditText -->
/>  

надеюсь, что это помогает :)

то, что я узнал, было добавить "\n" между словами, где вы хотите, чтобы он тормозил в следующую строку. Например...

<TextView
    android:id="@+id/time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:text="M-F 9am-5pm \n By Appointment Only" />

the \n между 5pm и By позволил мне больше контролировать, где я хотел, чтобы моя следующая строка начиналась и заканчивалась.

лучший ответ, который я нашел для многострочного TextView:

android:inputType="textMultiLine"

заменить "\n" С Html equavalent "&lt;br&gt;" тогда звоните Html.fromHtml() в строке. Выполните следующие действия:

String text= model.getMessageBody().toString().replace("\n", "&lt;br&gt;")
textView.setText(Html.fromHtml(Html.fromHtml(text).toString()))

это отлично работает.

Я:

TableLayout tablelayout = (TableLayout) view.findViewById(R.id.table);
tablelayout.setColumnShrinkable(1,true);

это сработало для меня. 1-номер столбца.

для меня ни одно из решений не сработало. Я знаю, что это не полный ответ на этот вопрос, но иногда он может помочь.

Я поставил 4 textviews в вертикальном linearlayout.

<Linearlayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation:"vertical"

    ...>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line1"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line2"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line3"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line4"
       .../>
</LinearLayout>

Это решение хорошо подходит для случаев, когда текстовое представление текста является постоянным, например метки.

You can do this with TableRow, see below code

<TableRow >
    <TextView
        android:id="@+id/tv_description_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:padding="8dp"
        android:text="@string/rating_review"
        android:textColor="@color/black"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4"`enter code here`
        android:padding="8dp"
        android:text="The food test was very good."
        android:textColor="@color/black"
        android:textColorHint="@color/hint_text_color" />
</TableRow>

Почему бы вам не объявить строку вместо того, чтобы писать длинные строки в файл макета. Для этого вы должны объявить строку кода в файл макета 'android:text="@string/text"' и перейти к \\app\src\main\res\values\strings.xml и добавьте строку кода "ваш многострочный текст здесь" также используйте "\n", чтобы разорвать строку из любой точки, иначе строка будет автоматически скорректирована.

TextView будет многострочным, когда он не получит достаточно места для размещения в одной строке и одной строке, не установленной в true.

Если он получает пространство в одной строке, он не будет многострочным.

Comments

    Ничего не найдено.