2016-06-14 93 views
1

我有一个自定义的TextView类与此代码:的Android - TextView中的值设置为自定义的TextView

public CustomTextView extends TextView { 

     public CustomTextView(Context c, AttributeSet a) { 
      super(c, a); 
      TextView tv = (TextView) findViewById(R.id.myTv); 
      String str = tv.getText().toString(); 

      setText(str); 
     } 
    } 

而且我main.xml中包含此:

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/myTv" 
     android:text="Unkown" /> 

    <com.test.CustomTextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="100.0sp" /> 

我想什么做的是我想要获取TextView的字符串值(带有myTv的ID),并将我的CustomTextView的文本设置为与TextView相同。像TextView = CustomTextView。

myTv的字符串值由sharedpreferences改变,所以每次文本改变时,自定义文本也会改变。

我的问题是如何正确地做到这一点?

+1

在您的自定义视图上设置一个ID并在每次数据集更改时更新它?几乎与更新您的textview的方式相同。如果你想要一个文本侦听器,请查看Android [TextWatcher](https://developer.android.com/reference/android/text/TextWatcher.html)类。 – MeetTitan

+0

是的,这是可能的,但我想要的是,我会离开活动的地方是textview。我希望自定义文本视图能够完成这项工作,并在每次更改文本视图时自行更改。 –

+0

在我评论的最后看看链接,看看我读了你的想法。 'yourTextView.addTextChangedListener(new TextWatcher(){...});' – MeetTitan

回答

0

这非常简单,你只需初始化textviews并从一个字符串中获取字符串并将其设置为另一个。使用TextView扩展您的类将为您提供TextView可以使用的所有方法。

CustomTextView customtv = (CustomTextView) findViewById(R.id.customTv); 
TextView tv = (TextView) findViewById(R.id.myTv); 
customtv.setText(tv.getText()); 

只需在您的CustomTextView上设置id,无论您想要什么,我都会在这种情况下使用customTv id。

编辑:

据我了解,你想textChangeListener,这里是example

+0

对不起,我不明白你的答案。我想要的是我不想编辑textview所在的活动,并让customtextview自行更改。 –

+0

你是什么意思改变自己。你的意思是你每次更新textview你的customtextview更改或者... –

+0

我的主要目标是我只想让自定义textview与文本视图的值相同。 –

相关问题