繁体   English   中英

Android:在LinearLayout中将按钮向右对齐

[英]Android: Align a Button to the Right in LinearLayout

我有一段代码可用来创建新的LinearLayout 在布局中,我希望添加一个同时包含标签和值的TextView 然后在右边的它旁边,我要显示该按钮。 我希望按钮位于屏幕末端,而无需拉伸按钮。 我对按钮的宽度和高度WARP_CONTENT感到满意。

如何在代码中实现? 我几乎没有任何XML因此不能选择使用XML 我试图使该应用程序尽可能地动态,因此我决定避开XML

请参见下面的代码:

    // Build a button
    final Button addButton = new Button(task.getParent());
    addButton.setText("Add New");
    addButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // Open a file picker here to let the user pick a file
        }
    });

    // Build a new layout to hold all the elements
    LinearLayout verticalLayout = new LinearLayout(task.getParent());
    verticalLayout.setOrientation(LinearLayout.HORIZONTAL);
    verticalLayout.addView(sizeTextView);
    verticalLayout.addView(addButton);

预先谢谢你们。

尝试以下操作:在TextView和Button之间添加空间(视图)。

    // View space = new View(parent_context);
    View space = new View(task.getParent());

    // Width:0dp, Height:1 & Weight: 1.0
    LinearLayout.LayoutParams spaceLP = new LinearLayout.LayoutParams(0, 1, 1.0f);
    space.setLayoutParams(spaceLP);

    verticalLayout.addView(sizeTextView);

    verticalLayout.addView(space);

    verticalLayout.addView(addButton);

添加具有大小和引力的textview,如下所示:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
params.setLayoutDirection(Gravity.RIGHT|Gravity.CENTER_VERTICAL);      
verticalLayout.addView(sizeTextView,params);

为此,您应该使用相对布局和RelativeLayout.LayoutParams。 通过使用LayoutParams,您可以设置规则以根据需要对齐视图。

例如

RelativeLayout.LayoutParams params =  (RelativeLayout.LayoutParams)button.getLayoutParams();
 params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
 params.addRule(RelativeLayout.LEFT_OF, R.id.id_to_be_left_of);
  button.setLayoutParams(params); 

暂无
暂无

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

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