Johannes
Johannes

Reputation: 223

setMargins() won't work - Android

I've been looking for solutions for this problem for more than one hour now, but none is working. :/

I want to set the top margin of my TextView to a value depending on the integer position. But somehow the margins won't show up...

public void addElements(int position, String title,int colour, RelativeLayout ld){
            int px = (int) TypedValue.applyDimension(
                    TypedValue.COMPLEX_UNIT_DIP,
                    1, 
                    res.getDisplayMetrics()
            );

            int pos = 168*px;

            LayoutParams params;

            params = new LayoutParams(LayoutParams.MATCH_PARENT,144*px);
            params.setMargins(0, 168, 0, 0);

            TextView tv = new TextView(activity);
            tv.requestLayout();
            tv.setBackgroundResource(colour);
            tv.setText(title);
            tv.setSingleLine(false);
            ld.addView(tv, params);



        }

Upvotes: 0

Views: 2458

Answers (2)

Nimish Choudhary
Nimish Choudhary

Reputation: 2088

Try this:

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 144);
    params.setMargins(0, 168, 0, 0);

Upvotes: 1

John Thompson
John Thompson

Reputation: 162

LayoutMargins are reserved for ViewGroup's such as RelativeLayout, LinearLayout, etc. Most common Views such as a TextView use padding in order to add additional spacing.

This should work:

tv.setPaddingRelative(0,168,0,0);

Upvotes: 0

Related Questions