在自定义视图中更改TextView对象

时间:2015-06-09 19:09:32

标签: android textview android-custom-view

我无法理解为什么我无法在扩展视图的类中更改/操作视图(即textview)。我只能"做事情"在xml中,但不在自定义视图中进行任何更改。在那个类中,我已经膨胀了xml文件,编译器没有抱怨。它只是 - 如果我想使用setText方法,没有任何事情发生。

xml-file

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_width="720dp"
android:layout_height="1250dp"
android:layout_marginLeft="0dp" >
<LinearLayout
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="1250dp"
    android:orientation="vertical">

     <TextView
    android:id="@+id/theTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text = "here I am changeable :-)"/>     

 </LinearLayout>   

 public class DrawChart extends View {

   private TextView tv;

   public DrawChart(Context context) {
    super(context);


     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.activity_main, new LinearLayout(context), true);

     tv = (TextView) view.findViewById(R.id.theTextView);
     tv.setText("I would like to be changed here :-(");


.....

@Override
protected void onDraw(Canvas canvas) {

  ..... // custom drawings here

主级

 public class MainActivity extends ActionBarActivity {

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

    DrawChart dc = new DrawChart(this);

    LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
    layout.addView(dc);

}

那么 - 我做错了什么?

编辑:我甚至尝试了以下内容 - 但我既不工作

 LinearLayout ll = (LinearLayout) view.findViewById(R.id.layout);
    ll.removeView(tv);
    tv.setText("jfjgjfgjfjg");
    ll.addView(tv);

编辑:我用另一种方式解决了它:相反,我将textView从MainActivity传递给了DrawCharts构造函数 - 然后它工作得很好:-) 因此,xml的膨胀有问题。我宁愿使用第一种方法,所以随意回答这个问题,膨胀有什么问题,谢谢!!

0 个答案:

没有答案