簡體   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