Многострочный 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...
так в чем же ошибка, которую я здесь делаю?
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 позволил мне больше контролировать, где я хотел, чтобы моя следующая строка начиналась и заканчивалась.
заменить
"\n"СHtmlequavalent"<br>"тогда звонитеHtml.fromHtml()в строке. Выполните следующие действия:String text= model.getMessageBody().toString().replace("\n", "<br>") 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