我无法理解为什么我无法在扩展视图的类中更改/操作视图(即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的膨胀有问题。我宁愿使用第一种方法,所以随意回答这个问题,膨胀有什么问题,谢谢!!