Reputation: 175
I've read a few answers about setting margins of a textview programmatically when the parent is a LinearLayout, but in my case i need to set margin of a textview in a relativelayout
here's what i tried and didn't work:
description is my textview in the following code:
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params1.addRule(RelativeLayout.RIGHT_OF, idsArray[i]);
params1.addRule(RelativeLayout.LEFT_OF, R.id.imageButtonCamera);
params1.addRule(RelativeLayout.BELOW, R.id.divider);
params1.setMargins(8, 8, 8, 8)
description.setLayoutParams(params1);
Any hint ?
UDPATE:
my layout xml file:
the TextView with id textViewTip is the one i need to change relative and margins attributes.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_layout_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/layer_car_background" >
<TextView
android:id="@+id/textViewItemTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="12dp"
android:layout_marginLeft="8dp"
android:layout_marginBottom="12dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ImageView
android:id="@+id/imageViewTitle"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/textViewItemTitle"
android:src="@drawable/ic_action_expand" />
<RelativeLayout
android:id="@+id/relativeLayoutExpandable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginBottom="16dp"
android:animateLayoutChanges="true"
android:layout_below="@+id/textViewItemTitle" >
<View
android:id="@+id/divider"
android:layout_alignParentTop="true"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@android:color/darker_gray" />
<ImageView
android:layout_below="@id/divider"
android:id="@+id/imageViewItem"
android:layout_width="100dp"
android:layout_height="133dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textViewTip"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageViewItem"
android:layout_alignTop="@+id/imageViewItem"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="22dp"
android:layout_marginBottom="22dp"
android:layout_toLeftOf="@+id/imageButtonCamera"
android:layout_toRightOf="@+id/imageViewItem"
android:text="TextView" />
<EditText
android:id="@+id/editTextDescription"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@id/textViewTip"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="@string/enter_own_description"
android:inputType="textMultiLine" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/imageView2"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/imageView1"
android:layout_marginRight="12dp"
android:src="@drawable/ic_ok" />
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/imageView2"
android:layout_below="@+id/imageView2"
android:layout_marginTop="8dp" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox1"
android:layout_alignBottom="@+id/checkBox1"
android:layout_alignRight="@+id/imageView1" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_below="@+id/editTextDescription"
android:layout_marginRight="17dp"
android:layout_toLeftOf="@+id/imageView2"
android:src="@drawable/ic_repair" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox2"
android:layout_alignBottom="@+id/checkBox2"
android:layout_alignParentLeft="true"
android:layout_marginLeft="8dp"
android:text="@string/estimated_cost"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editTextEstCost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/checkBox1"
android:layout_toLeftOf="@+id/checkBox2"
android:layout_toRightOf="@+id/textView1"
android:layout_marginRight="24dp"
android:ems="10"
android:inputType="numberDecimal" />
<ImageButton
android:id="@+id/imageButtonCamera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/textViewTip"
android:background="@android:color/transparent"
android:src="@drawable/ic_action_camera" />
</RelativeLayout>
Upvotes: 1
Views: 19616
Reputation: 1227
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params1.setMargins(8, 8, 8, 8);
description.setLayoutParams(params1);
try this. as it is working now and will provide margins.
look my updated ans. from the xml the margin layout working well you can set the margin from xml. as
<TextView
android:id="@+id/textViewTip"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageViewItem"
android:layout_alignTop="@+id/imageViewItem"
android:layout_marginLeft="8dp"
android:layout_marginRight="20dp"
android:layout_marginTop="22dp"
android:layout_marginBottom="22dp"
android:layout_toLeftOf="@+id/imageButtonCamera"
android:layout_toRightOf="@+id/imageViewItem"
android:text="Changable" />
it is working and if you want to change the margins programmatically then use the following code.
LayoutParams p=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
TextView tv=(TextView)findViewById(R.id.textViewTip);
p.setMargins(30, 30, 30, 30);
tv.setLayoutParams(p);
Upvotes: 4