Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

programmatically set margin/ padding of textview in a listview

Tags:

This is a part of main_alllatestnews.xml

<LinearLayout     android:id="@+id/layout_content"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:layout_above="@id/layout_menu"     android:layout_below="@id/layout_title"     android:orientation="vertical" >     <ListView         android:id="@android:id/list"         android:layout_width="fill_parent"         android:layout_height="wrap_content" >     </ListView> </LinearLayout> 

This is full of main_alllatestnewslist.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_temp" android:layout_width="fill_parent" android:layout_height="100px" android:background="@drawable/background_news_list" >  <ImageView     android:id="@+id/image_alllatestnewstitle"     android:layout_width="134px"     android:layout_height="80px"     android:layout_marginBottom="5px"     android:layout_marginLeft="10px"     android:layout_marginRight="10px"     android:layout_marginTop="5px"     android:scaleType="centerCrop" />  <LinearLayout     android:id="@+id/test"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:orientation="vertical" >      <TextView         android:id="@+id/text_particularlatestnewstitle"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:textColor="#000000"         android:textSize="25px" />      <RelativeLayout         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:layout_marginTop="25px" >          <TextView             android:id="@+id/text_newsdate"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:textColor="#999999"             android:textSize="15px" />          <TextView             android:id="@+id/text_newscategorytitle"             android:layout_width="50px"             android:layout_height="wrap_content"             android:layout_alignParentRight="true"             android:layout_gravity="right"             android:gravity="right"             android:textColor="#ff0000"             android:textSize="15px" />     </RelativeLayout> </LinearLayout> 

This is a part of main_alllatestnews.java

LayoutInflater liInflater = (LayoutInflater) this             .getSystemService(Context.LAYOUT_INFLATER_SERVICE);     linear.addView(liInflater             .inflate(R.layout.main_alllatestnewslist, null)); lv = (ListView) findViewById(android.R.id.list); for (int i = 0; i < webservice.news.size(); i++) {     maintitle = (TextView) findViewById(R.id.text_particularlatestnewstitle);     LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)maintitle.getLayoutParams();      layoutParams.setMargins(50, 0, 0, 0);       <-- method one      maintitle.setPadding(50, 0, 0, 0);          <-- method two     maintitle.setLayoutParams(layoutParams);      int margin = 100;                           <-- method three     ((MarginLayoutParams) maintitle.getLayoutParams()).leftMargin = margin; } SimpleAdapter adapter = new SimpleAdapter(this, fillMaps,             R.layout.main_alllatestnewslist, from, to);     lv.setAdapter(adapter); 

As you can see i had used THREE methods to set margin/ padding of textview in a listview but not success.

I am using xml textview instead of create new.

I want to manually set because i got if / else statement there as did not post out.

I am totally out of idea how to set it in java.

Please provide me a idea that workable one, thanks

((MarginLayoutParams) maintitle.getLayoutParams()).leftMargin = margin; 
like image 758
Alan Lai Avatar asked May 08 '12 02:05

Alan Lai


1 Answers

maintitle.setPadding(50, 0, 0, 0); (method 2) should work.

I think the problem is that, although you do a lot of changes to the TextView, at the end you kind of inflate a new layout again in:

SimpleAdapter adapter = new SimpleAdapter(this, fillMaps,              R.layout.main_alllatestnewslist, from, to); 

so, make a custom adapter, then inflate and customize your TextView in the getView().

like image 162
C. Leung Avatar answered Sep 17 '22 13:09

C. Leung