Android 如何以编程方式将多个线性布局添加到一个视图中,然后添加到ViewFlipper?

Android 如何以编程方式将多个线性布局添加到一个视图中,然后添加到ViewFlipper?,android,layout,android-linearlayout,viewflipper,Android,Layout,Android Linearlayout,Viewflipper,我希望题目能很好地描述这个问题 我想创建这个XML,但要以编程方式(请不要建议不要以编程方式创建它^ u^) 其中flipper的定义为: ViewFlipper flipper = (ViewFlipper) findViewById(R.id.viewflip); 毫无问题,我可以在加载时在窗口中看到“l1”,但l2没有找到。我把LayoutParams搞砸了吗?我可以使用addView添加线性布局吗?我想你忘了设置布局权重(但只有我的意见可能是错误的)。 由于您正在添加更多布局高度设置为

我希望题目能很好地描述这个问题

我想创建这个XML,但要以编程方式(请不要建议不要以编程方式创建它^ u^)

其中flipper的定义为:

ViewFlipper flipper = (ViewFlipper) findViewById(R.id.viewflip);

毫无问题,我可以在加载时在窗口中看到“l1”,但l2没有找到。我把LayoutParams搞砸了吗?我可以使用addView添加线性布局吗?

我想你忘了设置布局权重(但只有我的意见可能是错误的)。
由于您正在添加更多布局高度设置为“填充父视图”的视图,请使用层次结构查看器帮助调试动态生成的布局:@commonware:谢谢。我从来不知道它的存在,更不用说它能解决问题了!您似乎正在将视图附加到l1。我也会使用addView(视图v)检查是否将它们直接添加到Flipper。
     LinearLayout l1 = new LinearLayout(this);
     LinearLayout l2 = new LinearLayout(this);       
     Button btn=new Button(this);
     EditText messageHistory = new EditText(this);
     EditText newMessage = new EditText(this);
     TextView windowTitle = new TextView(this);     
     btn.setText("Send");
     btn.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 4f));

     btn.setOnClickListener(new OnClickListener() {         
        @Override
        public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Clicked send in child index: "+ flipper.getDisplayedChild(), Toast.LENGTH_SHORT).show();
            }           
    });

    windowTitle.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    windowTitle.setPadding(0, 5, 0, 10);
    windowTitle.setText("Chat with: ");

    messageHistory.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    messageHistory.setGravity(Gravity.TOP);
    messageHistory.setMovementMethod(new ScrollingMovementMethod());
    messageHistory.setClickable(false);
    messageHistory.setFocusable(false);     
    messageHistory.setPadding(0, 0, 0, 5);


    newMessage.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1f));
    newMessage.setGravity(Gravity.TOP);
    newMessage.setMovementMethod(new ScrollingMovementMethod());
    newMessage.requestFocus();      

    l1.setOrientation(LinearLayout.VERTICAL);
    l1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    l2.setOrientation(LinearLayout.HORIZONTAL);
    l2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

    l1.addView(windowTitle);
    l1.addView(messageHistory);
    l2.addView(newMessage);
    l2.addView(btn);
    l1.addView(l2);
    flipper.addView(l1);
ViewFlipper flipper = (ViewFlipper) findViewById(R.id.viewflip);