Android - 将文本设置为TextView

时间:2013-10-18 14:32:26

标签: android textview

我目前正在为学校项目学习一些android,我无法弄清楚如何动态地将文本设置为TextView。

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enviar_mensaje);
    err = (TextView)findViewById(R.id.texto);
    err.setText("Escriba su mensaje y luego seleccione el canal.");
}

这目前无效,我找不到让它工作的方法......

任何帮助都会被夸大...... 谢谢你的时间, 何。

编辑:这是activity_enviar_mensaje.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ...
    tools:context=".EnviarMensaje" >
    ...
    <TextView
        android:id="@+id/texto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/listaVista"
        android:layout_alignParentBottom="true"
        android:layout_alignRight="@+id/listaVista"
        android:text="TextView" />
    ...
</RelativeLayout>

不工作我的意思是所显示的文字随时都不会改变......

25 个答案:

答案 0 :(得分:93)

在你的布局XML中:

<TextView
        android:id="@+id/myAwesomeTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        android:textSize="20sp" />

然后,在您的活动类中:

// globally 
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);

//in your OnCreate() method
myAwesomeTextView.setText("My Awesome Text");

答案 1 :(得分:15)

在您的XML中输入此代码

<TextView
    android:id="@+id/textview1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

将此代码放入您的JAVA文件中

//声明像TextView全球的组件是一个很好的Habbit

TextView mTextView = (TextView) findViewById(R.id.textview1);

//将此内容放入OnCreate

mTextView.setText("Welcome to Dynamic TextView");

答案 2 :(得分:9)

好吧,@+id/listaVista ListView是在@+id/texto之后绘制的。所以在ListView中更改:

android:layout_below="@+id/editText1"

为:

android:layout_above="@+id/texto"

此外,由于列表是在textview之后绘制的,因此我发现在TextView中使用android:layout_alignRight="@+id/listaVista"很危险。所以删除它并找到另一种对齐方式。

修改 再看看你的布局,我认为这是你真正想要的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".EnviarMensaje" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/texto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/listaVista"
        android:layout_alignParentBottom="true"
        android:text="TextView" />

    <ListView
        android:id="@+id/listaVista"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/texto"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1" >
    </ListView>

</RelativeLayout>

答案 3 :(得分:6)

在xml中使用:

<TextView 
       android:id="@+id/textView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>

在“活动”中定义视图:

Textview textView=(TextView)findViewById(R.id.textView);
textView.setText(getResources().getString(R.string.txt_hello));

在字符串文件中:

<string name="txt_hello">Hello</string>

输出:你好

答案 4 :(得分:6)

在布局文件中。

<TextView
   android:id="@+id/myTextView"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:text="Some Text"
   android:textSize="18sp"
   android:textColor="#000000"/>

活动

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setText("Hello World!");

答案 5 :(得分:5)

为什么不尝试在onStart()上分配textview内容而不是onCreate()

答案 6 :(得分:4)

我有类似的问题。事实证明我有两个具有相同ID的TextView对象。他们在不同的视图文件中,所以Eclipse没有给我一个错误。尝试在TextView中重命名您的ID,看看是否无法解决您的问题。

答案 7 :(得分:4)

在您的activity_main.xml中

粘贴此代码:

            <TextView
                 android:id="@+id/name"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_alignParentLeft="true"
                 android:layout_alignParentTop="true"
                 android:layout_marginLeft="19dp"
                 android:layout_marginTop="43dp"
                 android:text="@string/name" />

然后转到res文件夹 - &gt; values-&gt; strings.xml 使用已存在的代码粘贴以下代码:

          <string name="name">Escriba su mensaje y luego seleccione el canal.</string>

上面的代码表示你创建了一个带有id:name(android:id =&#34; @ + id / name&#34;)的textview,并将textview分配给一个带有标识符名称的字符串(android:text =&#34; @串/名称&#34) 在strings.xml中,您使用该标识符名称来分配文本,

答案 8 :(得分:4)

试试这个:

TextView err = (TextView)findViewById(R.id.text);

确保导入TextView。

答案 9 :(得分:3)

这应该可以解决问题:

TextView.setText("test");

答案 10 :(得分:3)

您可以在编程方式中在textview中设置字符串,如下所示。

TextView textView = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

TextView textView = (TextView)findViewById(R.id.texto);
err.setText(getActivity().getResource().getString(R.string.seleccione_canal));

您可以在xml中设置字符串,如下所示。

<TextView
         android:id="@+id/name"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
         android:layout_marginLeft="19dp"
         android:layout_marginTop="43dp"
         android:text="Escriba su mensaje y luego seleccione el canal." />

<TextView
         android:id="@+id/name"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentTop="true"
         android:layout_marginLeft="19dp"
         android:layout_marginTop="43dp"
         android:text="@string/seleccione_canal" />

答案 11 :(得分:3)

请更正以下内容:

err = (TextView)findViewById(R.id.texto);

为:

err = (TextView)findViewById(R.id.err);

答案 12 :(得分:3)

在XML文件中,

<TextView
       android:id="@+id/textview"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="My Name"
       android:textColor="#cccccc"/>

在Java活动文件中,

public class MainActivity1 extends Activity
 {
   TextView t1;
   public void onCreate(Bundle onSavedInstance)
      {
         setContentView(R.layout.xmlfilename);
          t1 = (TextView)findViewbyId(R.id.textview);
      }
 }

答案 13 :(得分:2)

  

首先,您应该为文本视图TextView show_alter

创建一个对象
show_alert = (TextView)findViewById(R.id.show_alert);
show_alert.setText("My Awesome Text");

答案 14 :(得分:2)

你应该使用ButterKnife Library http://jakewharton.github.io/butterknife/

并像

一样使用它
@InjectView(R.id.texto)
TextView err;
onCreate方法中的

ButterKnife.inject(this)
err.setText("Escriba su mensaje y luego seleccione el canal.");

答案 15 :(得分:2)

正如你给出了静态文本

err.setText("Escriba su mensaje y luego seleccione el canal.");

它不会改变,它将保持不变。

textview的动态文字示例为:

MainActivity.java
package com.example.dynamictextview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    int count = 0;
    Button clickMeBtn;
    TextView dynamicText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        clickMeBtn = (Button) findViewById(R.id.button_click);
        dynamicText = (TextView) findViewById(R.id.textview);

        clickMeBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                count++;
                dynamicText.setText("dynamic text example : " + count);

            }
        });

    }

}

For activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.dynamictextview.MainActivity" >

    <Button 
        android:id="@+id/button_click"
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="click me"
        android:layout_centerInParent="true" />

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" 
        android:layout_below="@id/button_click"
        android:layout_centerHorizontal="true"
        android:textSize="25sp"
        android:layout_marginTop="20dp"
        />

</RelativeLayout>

答案 16 :(得分:1)

您的代码没问题,您使用TextView加载包含setContentView()的.xml:

   setContentView(R.layout.activity_enviar_mensaje);

然后在activity_enviar_mensaje.xml中获取TextView的引用,并设置文本:

err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

问题是您的TextView被ListView隐藏了

enter image description here

答案 17 :(得分:0)

转到您的activityMain并通过从小部件部分添加小部件并通过选择和键入手动更改文本来设置文本。

答案 18 :(得分:0)

在你的布局中。你的Texto不应该包含(android:text = ...)。我会删除这一行。保留Java字符串或(android:text = ...)

答案 19 :(得分:0)

final TextView err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

您可以找到有关Textview here

的所有信息

答案 20 :(得分:0)

In your layout XML:

<TextView
        android:id="@+id/myAwesomeTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Escriba el mensaje y luego clickee el canal a ser 
enviado"
        android:textSize="20sp" />

Then, in your activity class:

// globally 
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);

//in your OnCreate() method
myAwesomeTextView.setText("My Awesome Text");

答案 21 :(得分:0)

科特林溶液

要使用字符串进行设置,只需使用

view.text = "My string"

要对资源值执行相同操作,请将此扩展名属性添加到更容易设置文本的位置

view.textRes = R.string.my_string

var TextView.textRes
    get() = 0 // HACK: property requires getter
    set(@StringRes textRes) {
        text = resources.getText(textRes)
    }

答案 22 :(得分:0)

也许您已经在onResume()函数中分配了文本

答案 23 :(得分:-1)

在TextView中添加动态文本非常容易。 android中有setText方法,借助该方法,您可以设置动态文本,例如。

textView.setText("Hello World");

有关完整说明,您可以访问此链接。 https://www.owlbuddy.com/learn/TextView-In-Android

答案 24 :(得分:-1)

我知道它有两个月了,是的

替换您的代码

Private TextView err;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enviar_mensaje);
    err = (TextView)findViewById(R.id.texto);
    err.setText("Escriba su mensaje y luego seleccione el canal.");
}