Android 如何引用通过代码创建的文本视图?
以下是我为Android 如何引用通过代码创建的文本视图?,android,dynamic,reference,generated,Android,Dynamic,Reference,Generated,以下是我为TextView编写的代码。 我想从其他类或同一类中引用它,但我找不到一种方法来确定它;如中所示,我希望根据输入更改值。这是动态创建TextView的代码 public TextView descriptionTextView(Context context, String text) { final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WR
TextView
编写的代码。
我想从其他类或同一类中引用它,但我找不到一种方法来确定它;如中所示,我希望根据输入更改值。这是动态创建TextView的代码
public TextView descriptionTextView(Context context, String text) {
final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final TextView textView = new EditText(context);
textView.setLayoutParams(lparams);
textView.setTextSize(10);
textView.setTextColor(Color.rgb(0,0,0));
textView.setText(" " + text + "");
textView.setMaxEms(8);
textView.setKeyListener(null);
textView.setFocusableInTouchMode(false);
textView.setEnabled(false);
return textView;
}
下面是从相同/不同类调用它的方法:
LinearLayout layout = findViewById(R.id.linearLayout);
TextView view = descriptionTextView(this, "Sample text");
layout.addView(view);
在Android中,创建其他XML文件的视图不是首选方法。 最好的方法是在XML文件中创建此TextView,并使用其id链接它。 像这样
public TextView descriptionTextView(Context context, String text){
ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final TextView textView = new TextView (context); //Change this to TextView
textView.setLayoutParams(lparams);
textView.setTextSize(10);
textView.setTextColor(Color.rgb(0,0,0));
textView.setText(" " + text + "");
textView.setMaxEms(8);
textView.setKeyListener(null);
textView.setFocusableInTouchMode(false);
textView.setEnabled(false);
return textView;
}
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
/>
如果此方法没有帮助,并且您仍然希望在Java文件中创建视图,则将其公开并超出函数边界,以使其在任何地方都可以访问。给
TextView
一个id,然后通过id访问TextView,如下所示-
给出id,如textView.setId(1)代码>
假设textView的布局是线性布局
您可以使用以下代码按id获取textView-
public TextView descriptionTextView(Context context, String text) {
final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final TextView textView = new EditText(context);
textView.setLayoutParams(lparams);
textView.setTextSize(10);
textView.setId(1);
textView.setTextColor(Color.rgb(0,0,0));
textView.setText(" " + text + "");
textView.setMaxEms(8);
textView.setKeyListener(null);
textView.setFocusableInTouchMode(false);
textView.setEnabled(false);
return textView;
}
希望这有帮助 您必须使用此方法在运行时将TextView
添加到某些布局中。因此,您可以在运行时通过读取该布局的子视图再次找到它,然后将视图
转换为文本视图
,并更新数据。
public TextView descriptionTextView(Context context, String text) {
final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final TextView textView = new EditText(context);
textView.setLayoutParams(lparams);
textView.setTextSize(10);
textView.setId(1);
textView.setTextColor(Color.rgb(0,0,0));
textView.setText(" " + text + "");
textView.setMaxEms(8);
textView.setKeyListener(null);
textView.setFocusableInTouchMode(false);
textView.setEnabled(false);
return textView;
}
TextView tv = (TextView)view.findViewById(1); // view is LinearLayout object