如何将 TextView 添加到自定义 LinearLayout 视图?
How to add TextView to custom LinearLayout view?
我创建了一个扩展 LinearLayout 的自定义视图。我通过这样的服务将它们添加到屏幕上:
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(view, mParams);
这适用于只有背景颜色的简单空视图。但现在我想添加 TextView,我正在尝试这样做:
TextView tv = new TextView(this);
tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
tv.setText("Test text");
view.addView(tv);
但是 TextView 没有显示。我错过了什么?
编辑:我刚刚注意到,如果我在自定义视图上删除此覆盖方法,则会绘制 TextView:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(getDesiredWidth(), getDesiredHeight());
}
但是,我需要该行来正确设置我想要的视图大小。
我个人会选择 inflation 路线,因为过去曾因以编程方式添加视图而感到头疼。这是从 LinearLayout 扩展的 a quick example of a custom view,从 XML 布局文件扩展而来,使用 public 方法设置嵌入文本视图的值。
关键是:
private TextView embeddedTextView;
..
private void init() {
LayoutInflater.from(getContext()).inflate(
R.layout.linear_layout_with_textview_layout, this);
embeddedTextView = (TextView) findViewById(R.id.embedded_text_view);
}
public void setEmbeddedTextViewText(String text) {
embeddedTextView.setText(text);
}
当您在 XML 中更换不同样式的布局并使用相同的自定义视图时,我采用了这种方法;适当的代码可重用性。长期工作较少-运行.
编辑:这里是 a way of hiding the textview by default, or an empty string ""。
我创建了一个扩展 LinearLayout 的自定义视图。我通过这样的服务将它们添加到屏幕上:
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(view, mParams);
这适用于只有背景颜色的简单空视图。但现在我想添加 TextView,我正在尝试这样做:
TextView tv = new TextView(this);
tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
tv.setText("Test text");
view.addView(tv);
但是 TextView 没有显示。我错过了什么?
编辑:我刚刚注意到,如果我在自定义视图上删除此覆盖方法,则会绘制 TextView:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(getDesiredWidth(), getDesiredHeight());
}
但是,我需要该行来正确设置我想要的视图大小。
我个人会选择 inflation 路线,因为过去曾因以编程方式添加视图而感到头疼。这是从 LinearLayout 扩展的 a quick example of a custom view,从 XML 布局文件扩展而来,使用 public 方法设置嵌入文本视图的值。
关键是:
private TextView embeddedTextView;
..
private void init() {
LayoutInflater.from(getContext()).inflate(
R.layout.linear_layout_with_textview_layout, this);
embeddedTextView = (TextView) findViewById(R.id.embedded_text_view);
}
public void setEmbeddedTextViewText(String text) {
embeddedTextView.setText(text);
}
当您在 XML 中更换不同样式的布局并使用相同的自定义视图时,我采用了这种方法;适当的代码可重用性。长期工作较少-运行.
编辑:这里是 a way of hiding the textview by default, or an empty string ""。