Change TextView text
I’m getting an error on my device and the application stops. I tried to show a TextView (not connected to an XML TextView ) and it worked.
8,291 9 9 gold badges 40 40 silver badges 57 57 bronze badges
asked Nov 19, 2012 at 11:38
Imri Persiado Imri Persiado
1,869 8 8 gold badges 29 29 silver badges 46 46 bronze badges
TextView cannot be set as your parent view. You’ll have to surround the TextView with a LinearLayout.
Nov 19, 2012 at 11:40
^ correct Show us your oncreate method, what’s the name of your xml file?
Nov 19, 2012 at 11:41
3 Answers 3
Your approach is incorrect. I think it will be Null Pointer Exception (next time post log cat)
You need to specify the layout you are using first, before finding views.
Java:
// Specify the layout you are using. setContentView(R.layout.yourlayout); // Load and use views afterwards TextView tv1 = (TextView)findViewById(R.id.textView1); tv1.setText("Hello");
Kotlin:
// Specify the layout you are using. setContentView(R.layout.yourlayout) // Load and use views afterwards val tv1: TextView = findViewById(R.id.textView1) tv1.text = "Hello"
Click Here to study exactly you want to know
Android studio как изменить текст в textview
Для простого вывода текста на экран предназначен элемент TextView . Он просто отображает текст без возможности его редактирования. Некоторые его основные атрибуты:
- android:text : устанавливает текст элемента
- android:textSize : устанавливает высоту текста, в качестве единиц измерения для указания высоты используются sp
- android:background : задает фоновый цвет элемента в виде цвета в шестнадцатиричной записи или в виде цветового ресурса
- android:textColor : задает цвет текста
- android:textAllCaps : при значении true делает все символы в тексте заглавными
- android:textDirection : устанавливает направление текста. По умолчанию используется направление слева направо, но с помощью значения rtl можно установить направление справо налево
- android:textAlignment : задает выравнивание текста. Может принимать следующие значения:
- center : выравнивание по центру
- textStart : по левому краю
- textEnd : по правому краю
- viewStart : при направлении текста слева направо выравнивание по левому краю, при направлении справа налево — по правому
- viewEnd : при направлении текста слева направо выравнивание по правому краю, при направлении справа налево — по левому
- monospace
- serif
- serif-monospace
- sans-serif
- sans-serif-condensed
- sans-serif-smallcaps
- sans-serif-light
- casual
- cursive
- cursive
Например, определим три текстовых поля:

Установка элемента в коде тоже не отличается сложностью. Например, создадим элемент и выведем его на экран:
package com.example.viewapp; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.graphics.Typeface; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); ConstraintLayout constraintLayout = new ConstraintLayout(this); TextView textView = new TextView(this); // установка фонового цвета textView.setBackgroundColor(0xffe8eaf6); // установка цвета текста textView.setTextColor(0xff5c6bc0); // делаем все буквы заглавными textView.setAllCaps(true); // устанавливаем вравнивание текста по центру textView.setTextAlignment(TextView.TEXT_ALIGNMENT_CENTER); // устанавливаем текста textView.setText("Hello Android!"); // установка шрифта textView.setTypeface(Typeface.create("casual", Typeface.NORMAL)); // устанавливаем высоту текста textView.setTextSize(26); ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams (ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT); layoutParams.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID; layoutParams.topToTop = ConstraintLayout.LayoutParams.PARENT_ID; textView.setLayoutParams(layoutParams); constraintLayout.addView(textView); setContentView(constraintLayout); >>
Иногда необходимо вывести на экран какую-нибудь ссылку, либо телефон, по нажатию на которые производилось бы определенное действие. Для этого в TextView определен атрибут android:autoLink :

android:autoLink может принимать несколько значений:
- none : отключает все ссылки
- web : включает все веб-ссылки
- email : включает ссылки на электронные адреса
- phone : включает ссылки на номера телефонов
- map : включает ссылки на карту
- all : включает все вышеперечисленные ссылки
То есть при настройке android:autoLink=»web» если в тексте есть упоминание адреса url, то этот адрес будет выделяться, а при нажатии на него будет осуществлен переход к веб-браузеру, который откроет страницу по этому адресу. С помощью прямой черты мы можем объединять условия, как в данном случае: android:autoLink=»web|email»
Вертикальный TextView
Создадим новый компонент на основе TextView, который будет выводить текст вертикально.
Сначала создадим стили для будущего вертикального текста:
res/values/styles.xml
Также создайте строковый ресурс в файле res/values/strings.xml:
Вертикальный текст Далее напишем отдельный класс для нового компонента. В старом варианте, который писался несколько лет назад, я использовал TextView, но сейчас студия стала советовать использовать AppCompatTextView и я согласился:
package ru.alexanderklimov.verticaltext; import android.content.Context; import android.graphics.Canvas; import android.support.annotation.Nullable; import android.support.v7.widget.AppCompatTextView; import android.text.TextPaint; import android.util.AttributeSet; import android.view.Gravity; public class VerticalTextView extends AppCompatTextView < final boolean topDown; TextPaint textPaint = getPaint(); public VerticalTextView(Context context, @Nullable AttributeSet attrs) < super(context, attrs); final int gravity = getGravity(); if (Gravity.isVertical(gravity) && (gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) < setGravity((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP); topDown = false; >else < topDown = true; >> @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) < super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); >@Override protected void onDraw(Canvas canvas) < textPaint.setColor(getCurrentTextColor()); textPaint.drawableState = getDrawableState(); canvas.save(); if (topDown) < canvas.translate(getWidth(), 0); canvas.rotate(90); >else < canvas.translate(0, getHeight()); canvas.rotate(-90); >canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop()); getLayout().draw(canvas); canvas.restore(); > >Чтобы добавить компонент в режиме дизайна, выбираем Advanced и переносим на форму элемент , откроется диалоговое окно, в котором нужно найти свой класс. В таком варианте компонент будет представлен следующим образом.
Можно использовать другой привычный формат. Чтобы менять направление текста, поиграйтесь с атрибутом android:gravity:

Пример может послужить отправной точкой для дальнейшего улучшения.
Текст под углом
Для развлечения напишем новый компонент, который будет выводить текст под разными углами, образуя солнышко.
package ru.alexanderklimov.custom; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.support.v7.widget.AppCompatTextView; import android.text.TextPaint; import android.util.AttributeSet; public class RotateTextView extends AppCompatTextView < private TextPaint mPaint = getPaint(); public RotateTextView(Context context) < super(context); init(); >public RotateTextView(Context context, AttributeSet attrs) < super(context, attrs); init(); >public RotateTextView(Context context, AttributeSet attrs, int defStyleAttr) < super(context, attrs, defStyleAttr); init(); >@Override protected void onDraw(Canvas canvas) < super.onDraw(canvas); int viewWidth = getWidth(); int viewHeight = getHeight(); canvas.translate(viewWidth / 2, viewHeight / 2); for (int i = 0; i < 10; i++) < String message = "Котик"; canvas.drawText(message, 30, 0, mPaint); canvas.rotate(36); >> private void init() < mPaint.setColor(Color.BLUE); mPaint.setTextSize(50); mPaint.setAntiAlias(true); >>Изменение текста в Xamarin.Android
В этом разделе вы будете использовать мини-приложение EditText для создания текстового поля для ввода пользователем. После ввода текста в поле клавиша ВВОД отобразит текст во всплывающем сообщении.
Откройте Resources/layout/activity_main.axml и добавьте элемент EditText в содержащий макет. В следующем примере activity_main.axml есть EditText объект , добавленный LinearLayout в :
В этом примере кода атрибуту EditText android:imeOptions присваивается значение actionGo . Этот параметр изменяет действие по умолчанию Готово на действие Go , чтобы нажатие клавиши ВВОД активировало KeyPress обработчик входных данных. (Обычно используется для того, actionGo чтобы с помощью клавиши ВВОД пользователь переходил к целевому объекту URL-адреса, введенного в.)
Чтобы обработать ввод пользовательского текста, добавьте следующий код в конец метода OnCreate в Файле MainActivity.cs:
EditText edittext = FindViewById(Resource.Id.edittext); edittext.KeyPress += (object sender, View.KeyEventArgs e) => < e.Handled = false; if (e.Event.Action == KeyEventActions.Down && e.KeyCode == Keycode.Enter) < Toast.MakeText(this, edittext.Text, ToastLength.Short).Show(); e.Handled = true; >>;Кроме того, добавьте следующую using инструкцию в начало файла MainActivity.cs , если он еще не существует:
using Android.Views;Этот пример кода раздувает элемент EditText из макета и добавляет обработчик KeyPress , который определяет действие, выполняемое при нажатии клавиши при фокусе мини-приложения. В этом случае метод определяется для прослушивания клавиши ВВОД (при нажатии) и последующего всплывающего сообщения с введенным текстом. Обратите внимание, что свойство Handled всегда должно иметь значение true , если событие было обработано. Это необходимо, чтобы предотвратить восходящее движение события (что приведет к возврату каретки в текстовом поле).
Запустите приложение и введите текст в текстовое поле. При нажатии клавиши ВВОД всплывающее уведомление будет отображаться, как показано справа:

Части этой страницы представляют собой изменения, основанные на работе, созданной и совместно используемой проектом Android с открытым исходным кодом и используемой в соответствии с условиями, описанными влицензии Creative Commons 2.5 AttributionLicense. Это руководство основано на руководстве поработе с формами Android.