Android 动态创建的线性布局不包装内容

Android 动态创建的线性布局不包装内容,android,android-layout,textview,Android,Android Layout,Textview,我试图在线性布局中动态添加文本视图。一旦所有文本视图的宽度大于屏幕宽度,我需要在第一个文本视图的下方创建另一个LinearLayout,并继续添加文本视图。我基本上是将一个字符串拆分为多个文本视图,因为我需要检查一些单词的前面是否有“#”。如果是这样,我需要改变颜色。我遇到的问题是,第一个LinearLayout非常高(高度不包裹内容)。有什么帮助吗 林肯是直线布局柜台。一旦文本视图的宽度大于屏幕宽度,它就会增加 public void TextMod() { Linea

我试图在
线性布局中动态添加文本视图。一旦所有文本视图的宽度大于屏幕宽度,我需要在第一个文本视图的下方创建另一个
LinearLayout
,并继续添加文本视图。我基本上是将一个
字符串
拆分为多个文本视图,因为我需要检查一些单词的前面是否有“#”。如果是这样,我需要改变颜色。我遇到的问题是,第一个
LinearLayout
非常高(高度不包裹内容)。有什么帮助吗

林肯是直线布局柜台。一旦文本视图的宽度大于屏幕宽度,它就会增加

        public void TextMod()
{
    LinearLayout.LayoutParams layoutParams,layoutParams2;
    layoutParams= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    layoutParams= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    llay= new LinearLayout(this.c);
    llay.setOrientation(LinearLayout.HORIZONTAL);
    llay.setBackgroundColor(Color.GREEN);
    llay2= new LinearLayout(this.c);
    llay2.setBackgroundColor(Color.MAGENTA);
    llay2.setOrientation(LinearLayout.HORIZONTAL);
    Boolean addl =true;
        String parts[]= this.Dis.split(" ");
        size=parts.length;
        int i=0;
        while( i<size)
        {
            //
            if(textview_wid < this.w )
            {
                TextView valueTV = new  TextView(c);
                String d= parts[i] + " ";
                valueTV.setText(d);
                valueTV.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);      
                 textview_wid +=valueTV.getMeasuredWidth();
                 Log.d(" des", " TEEXT WIDTH " +  valueTV.getMeasuredWidth());
                if(d.charAt(0)=='#') 
                {
                    valueTV.setTextColor(Color.MAGENTA);
                }
                if(addl)
                {
                     if(LinC==0)
                     {
                        llay.setLayoutParams(layoutParams);
                        this.Lin.addView(llay);
                     }
                     if(LinC==1)
                     {
                        llay2.setLayoutParams(layoutParams);
                        this.Lin.addView(llay2);
                     }



                    addl=false;

                }

                 valueTV.setLayoutParams(layoutParams);

                if(LinC==0)llay.addView(valueTV);
                if(LinC==1)llay2.addView(valueTV);
                i++;
            }
            else
            {

                Log.d(" des", " TOTAL TEXTVIE WIDE " + textview_wid);
                textview_wid =0;
                LinC++;
                addl=true;

            }


         //   valueTV.setLayoutParams(layoutParams);




        }

}
XML


你做错了什么

setContentView(R.layout.activity_main);
这将内容视图设置为作为参数传递的xml布局。由于您要在
TextMod
方法中创建动态布局,请稍后在代码中调用它,并在活动中设置结果布局。你应该这样做

onCreate(){
    ...
    LinearLayout mLayout;
    mLayout = sep.TextMod(); // make TextMod return the root view
    setContentView(mLayout);
}

你能粘贴剩下的代码吗?onCreate()?@AndyFaizan好的,我已经发布了,请发布xml文件(布局)@如果TextMod函数要在listview中使用,是否仍然可以使用此功能?TextMod函数将两个线性布局添加到主XML中的线性布局是的,您可以在listview中使用它,但如果遇到问题,则需要粘贴与此相关的代码。如果要在main.xml中的布局中添加两个布局,请参考xml中的主布局,并将动态布局设置为子布局。我还没有尝试过。我在试东西。我把if(textview_-widsetContentView(R.layout.activity_main);
onCreate(){
    ...
    LinearLayout mLayout;
    mLayout = sep.TextMod(); // make TextMod return the root view
    setContentView(mLayout);
}