首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android布局动态发布

Android布局动态发布
EN

Stack Overflow用户
提问于 2014-05-01 04:22:08
回答 2查看 93关注 0票数 0

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

所以就像这样

T-文本视图

B键

Ltb -包含T和B的布局

Lm -包含Ltb的主布局

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

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

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

实际结果:显示精细。但是当我输入比屏幕宽度更长的文本时,按钮就会被推到屏幕外,然后就消失了。

问题是我的动态布局做错了什么吗?

这里的代码:

代码语言:javascript
复制
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);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-01 04:39:45

代码语言:javascript
复制
// try this way, hope this will help you...

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout ltb = new LinearLayout(this);

        TextView T = new TextView(this);

        Button B =new Button(this);

        LinearLayout.LayoutParams ltbParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        LinearLayout.LayoutParams TParms = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1f);

        LinearLayout.LayoutParams BParms = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

        T.setLayoutParams(TParms);
        B.setLayoutParams(BParms);
        T.setText("Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text Demo Text");
        B.setText("Button");
        ltb.addView(T);
        ltb.addView(B);
        ltb.setLayoutParams(ltbParams);

        setContentView(ltb);

}
票数 3
EN

Stack Overflow用户

发布于 2014-05-01 04:40:31

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

代码语言:javascript
复制
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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23401961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档