繁体   English   中英

如何将TextView添加到自定义LinearLayout视图?

[英]How to add TextView to custom LinearLayout view?

我创建了一个扩展LinearLayout的自定义视图。 我通过这样的服务将它们添加到屏幕上:

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(view, mParams);

这适用于仅具有背景色的简单空视图。 但是现在我想添加TextViews,并且正在尝试这样做:

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);

但是,不会显示TextViews。 我想念什么?

编辑:我只是注意到,如果我在自定义视图上删除此替代方法,则将绘制TextView:

 @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(getDesiredWidth(), getDesiredHeight());
    }

但是,我需要该行以正确设置视图所需的大小。

我个人会走通货膨胀路线,因为过去以编程方式添加视图会导致头痛。 是一个自定义视图的快速示例,该自定义视图是从LinearLayout扩展而来的,该视图是从XML布局文件扩展而来的,具有用于设置嵌入式textview值的公共方法。

关键是:

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中不同样式的布局并使用相同的“自定义视图”时,我会采用这种方法。 适当的代码可重用性。 从长远来看,工作量少。

编辑:这是默认情况下隐藏textview或空字符串“”一种方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM