簡體   English   中英

Android /布局-實用地將邊距頂部添加到相對布局

[英]Android / Layout - Add margin top pragmatically to Relative Layout

我正在嘗試在活動中為我的相對布局實用地添加一個邊距頂部。 使用xml時,我可以在以下模式下執行此操作: android:layout_marginTop="10dp" ,但是當我嘗試進行實際操作時,沒有任何變化...

這是我正在使用的代碼:

//SCROLL VIEW
        ScrollView scrollView = new ScrollView(this);
        scrollView.setBackground(getResources().getDrawable(R.drawable.background));
        scrollView.setLayoutParams(new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT,
                                                     ScrollView.LayoutParams.MATCH_PARENT));
        scrollView.setPadding(20, 20, 20, 20);

        //LINEAR LAYOUT
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT));

        for (int i=1; i<=3; i++){
        //RELATIVE LAYOUT
        RelativeLayout relativeLayout = new RelativeLayout(this);
        relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
                RelativeLayout.LayoutParams.FILL_PARENT));
        relativeLayout.setBackgroundColor(getResources().getColor(R.color.grayColor));

        RelativeLayout.LayoutParams head_params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams();
        head_params.setMargins(0, 80, 0, 0);
        relativeLayout.setLayoutParams(head_params);

        //Need to understand how put a margin top to the relativeLayout

        //IMAGE VIEW
        ImageView selectedPhoto = new ImageView(this);
        selectedPhoto.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
        selectedPhoto.setImageResource(R.drawable.ic_launcher);


        //TEXT VIEWS
        TextView numberCopies = new TextView(this);
        numberCopies.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
        numberCopies.setGravity(Gravity.CENTER);
        numberCopies.setPadding(25, 25, 25, 25);
        numberCopies.setTextColor(getResources().getColor(R.color.blackColor));
        numberCopies.setText("2 copies ");
        RelativeLayout.LayoutParams layoutParamsNumberCopies = (RelativeLayout.LayoutParams) numberCopies.getLayoutParams();
        layoutParamsNumberCopies.addRule(RelativeLayout.CENTER_HORIZONTAL);
        numberCopies.setLayoutParams(layoutParamsNumberCopies);

        TextView priceCopies = new TextView(this);
        priceCopies.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
        priceCopies.setGravity(Gravity.CENTER);
        numberCopies.setPadding(25, 25, 25, 25);
        priceCopies.setTextColor(getResources().getColor(R.color.redColor));
        priceCopies.setText("$ 25 ");
        RelativeLayout.LayoutParams layoutParamsPriceCopies = (RelativeLayout.LayoutParams) priceCopies.getLayoutParams();
        layoutParamsPriceCopies.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        priceCopies.setLayoutParams(layoutParamsPriceCopies);


        relativeLayout.addView(selectedPhoto);
        relativeLayout.addView(numberCopies);
        relativeLayout.addView(priceCopies);
        linearLayout.addView(relativeLayout);
        }
        scrollView.addView(linearLayout);
        setContentView(scrollView);

}

我也試過relativeLayout.setMargins(20, 0, 0, 0); 但似乎此方法不適用於relativeLayout。 我不確定。

謝謝

將您的保證金行更改為

head_params.setMargins(0, 80, 0, 0);

保證金參數從左保證金開始順時針旋轉,即(左,上,右,下)。 但是,如果您有除上邊距以外的其他邊距,這將刪除它們。 一種更簡單,更直觀的方法是簡單地編寫

header_params.topMargin=80;

同樣不要忘記,您永遠不會將header_params設置回視圖。 在下面添加此行:

relativeLayout.setLayourParams(header_params);

嘗試這個

RelativeLayout.LayoutParams head_params = (RelativeLayout.LayoutParams)headView.getLayoutParams();
head_params.setMargins(0, 80, 0, 0);//substitute parameters for left, top, right, bottom

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM