How to programmatically set the size of the font in the list item before adding it to the ListView?
Question
I'm interested in how you can change the size of the text in the list and then add it to the ListView. I'm using a list_item with custom layout . The question is how you can set the size of the text before it gets into the ListView. I hope for your help.
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android1="http://schemas.android.com/apk/res/android">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/shop_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="1"
/>
<TextView
android:id="@+id/shop_address"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="2"
/>
</LinearLayout>
</LinearLayout>
day_list_events.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:id="@+id/layout"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/day_and_data"
android:text="Перелік клієнтів на сьогоднішній день."
android:textStyle="bold"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/help_info"
android:text="(Щоб отримати інформацію про клієнта та оформити замовлення - натисніть на відповідного клієнта у списку)"
android:textColor="#A0A0A0"
/>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/day_list_event"
>
</ListView>
</LinearLayout>
DayListEventsActivity.java
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Window;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class DayListEventsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.day_list_events);
sharedPreferences = getSharedPreferences("impInfo", Context.MODE_PRIVATE);
Resources res = this.getResources();
ArrayList<HashMap<String, String>> dayShopsInfo = new ArrayList<HashMap<String, String>>();
String[] shopName = res.getStringArray(R.array.shop_name);
String[] shopAddress = res.getStringArray(R.array.shop_address);
for(int i = 0; i < shopName.length; i++){
HashMap<String, String> dayShopsInfoCont = new HashMap<String, String>();
dayShopsInfoCont.put(KEY_SHOP_NAME, shopName[i]);
dayShopsInfoCont.put(KEY_SHOP_ADDRESS, shopAddress[i]);
System.out.println(i+" "+shopName[i]+" "+shopAddress[i]);
dayShopsInfo.add(dayShopsInfoCont);
}
ListView shopList = (ListView)findViewById(R.id.day_list_event);
SimpleAdapter shopListAdapter = new SimpleAdapter(this,
dayShopsInfo,
R.layout.list_item,
new String[]{KEY_SHOP_NAME, KEY_SHOP_ADDRESS},
new int[]{R.id.shop_name, R.id.shop_address});
shopList.setAdapter(shopListAdapter);
shopList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
private final String KEY_SHOP_NAME = "shop name";
private final String KEY_SHOP_ADDRESS = "shop address";
private SharedPreferences sharedPreferences;
}
UPDATE (Solution).
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class DayListEventsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.day_list_events);
sharedPreferences = getSharedPreferences("impInfo", Context.MODE_PRIVATE);
Resources res = this.getResources();
ArrayList<HashMap<String, String>> dayShopsInfo = new ArrayList<HashMap<String, String>>();
String[] shopName = res.getStringArray(R.array.shop_name);
String[] shopAddress = res.getStringArray(R.array.shop_address);
for(int i = 0; i < shopName.length; i++){
HashMap<String, String> dayShopsInfoCont = new HashMap<String, String>();
dayShopsInfoCont.put(KEY_SHOP_NAME, shopName[i]);
dayShopsInfoCont.put(KEY_SHOP_ADDRESS, shopAddress[i]);
System.out.println(i+" "+shopName[i]+" "+shopAddress[i]);
dayShopsInfo.add(dayShopsInfoCont);
}
ListView shopList = (ListView)findViewById(R.id.day_list_event);
MySimpleAdapter shopListAdapter = new MySimpleAdapter(this,
dayShopsInfo,
R.layout.list_item,
new String[]{KEY_SHOP_NAME, KEY_SHOP_ADDRESS},
new int[]{R.id.shop_name, R.id.shop_address});
shopList.setAdapter(shopListAdapter);
shopList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
public class MySimpleAdapter extends SimpleAdapter{
public MySimpleAdapter(Context context,
List<? extends Map<String, ?>> data,
int resource,
String[] from, int[] to) {
super(context, data, resource, from, to);
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
View returnView = super.getView(position, convertView, parent);
TextView shopName = (TextView)returnView.findViewById(R.id.shop_name);
shopName.setTextSize(20.0f);
return returnView;
}
}
private final String KEY_SHOP_NAME = "shop name";
private final String KEY_SHOP_ADDRESS = "shop address";
private SharedPreferences sharedPreferences;
}
Solution
Simply do this in the getView()
method of the Adapter
, to set the font
size.
tv.setTextSize(20.0f);
OTHER TIPS
If you are using xml for setting layout for list_item
and there you have TextView
you can change the size of the text like this:
<TextView
android:id="@+id/text_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp" /> // This is a size of your text
There's not "size of text" You can change the size of the text inside the TextView: Add:
android:textSize="16sp"
TO your XML Or you can do it by code in the getView() method in the Adapter:
YOUR_TEXTVIEW.setTextSize(16);
I know this might be a little late, however I noticed that everyone forgot something in their answers. the method setTextSize takes 2 parameters for it's input. The second if a float that is the number of the size you want. The first is a TypedValue Constant to let specify what the number means ie: pixels, dip, sp, etc... so for the setTextSize set to 18sp it would look something like this:
TextView yourTextView = (TextView)findViewById(R.id.yourTextViewId);
yourTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP,18)
and you would do it in the getView of the ArrayAdapter. Hope this helps someone else who was looking for an answer and stumble upon this one.
Try this one
TextView textView = (TextView) findViewById (R.id.yourTextViewId);
textView.setTextSize(18);