Android布局动态问题

Android布局动态问题,android,android-layout,Android,Android Layout,尝试将textView和按钮动态添加到LinearLayout中,然后将此布局添加到setContentView使用的主布局中 所以是这样的 文本视图 B按钮 Ltb-包含T和B的布局 Lm-包含Ltb的主布局 然后使用此.setContentView(Lm)显示结果 角色: T一定在左边。 B必须位于布局内屏幕的右侧 上面的所有元素都是动态声明的,不使用布局xml 实际结果: 显示良好。但是当我输入比屏幕宽度长的文本时,按钮被推到屏幕外,消失了 问题,是不是我的动态布局出了问题 代码如下: p

尝试将textView和按钮动态添加到LinearLayout中,然后将此布局添加到setContentView使用的主布局中

所以是这样的

文本视图

B按钮

Ltb-包含T和B的布局

Lm-包含Ltb的主布局

然后使用此.setContentView(Lm)显示结果

角色: T一定在左边。 B必须位于布局内屏幕的右侧

上面的所有元素都是动态声明的,不使用布局xml

实际结果: 显示良好。但是当我输入比屏幕宽度长的文本时,按钮被推到屏幕外,消失了

问题,是不是我的动态布局出了问题

代码如下:

public SearchBar(Context c){
    et=new EditText(c);
    bt=new Button(c);
    et.setHint("added et");
    bt.setText("added btn");


    ll=new LinearLayout(c);
    setLinearLayout();

    et.setLayoutParams(flowLeft());
    bt.setLayoutParams(flowRight());

    ll.addView(et);
    ll.addView(bt);
}


private RelativeLayout.LayoutParams flowRight(){
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
        //params.weight = 1.0f;
        //params.gravity=Gravity.RIGHT;
        params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);


    return params;     
}

private RelativeLayout.LayoutParams flowLeft(){
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
        //params.weight = 1.0f;
        //params.gravity=Gravity.RIGHT;
        params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);


    return params;     
}

private void setLinearLayout(){
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    ll.setOrientation(LinearLayout.HORIZONTAL); 
    ll.setLayoutParams(params);
}

像这样做。这可能对你有帮助

Ltb.setWeightSum(100);
Ltb.setOrientation(LinearLayout.HORIZONTAL);

T.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

B.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

像这样做。这可能对你有帮助

Ltb.setWeightSum(100);
Ltb.setOrientation(LinearLayout.HORIZONTAL);

T.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

B.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

像这样做。这可能对你有帮助

Ltb.setWeightSum(100);
Ltb.setOrientation(LinearLayout.HORIZONTAL);

T.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

B.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

像这样做。这可能对你有帮助

Ltb.setWeightSum(100);
Ltb.setOrientation(LinearLayout.HORIZONTAL);

T.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

B.setLayoutParams(new LinearLayout.LayoutParams(0,LayoutParams.MATCH_PARENT,50));

非常有用。谢谢@haresh,非常有帮助。谢谢@haresh,非常有帮助。谢谢@haresh,非常有帮助。谢谢@Haresh