I have a problem about TextView in RelativeLayout is not center, (only some objects)
First, I'm use ListAdapter for ListView.
public class ListAdapter extends ArrayAdapter<Menu> {
private LayoutInflater inflater;
public ListAdapter(Context c, ArrayList<Menu> o) {
super(c, 0, o);
inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
#Override
public View getView(int position, View v, ViewGroup parent) {
View view = null;
if (v == null) {
view = inflater.inflate(R.layout.row, null);
} else {
view = v;
}
final Menu data = this.getItem(position);
TextView title = (TextView) view.findViewById(R.id.title);
ImageView background = (ImageView) view.findViewById(R.id.background);
ImageView icon = (ImageView) view.findViewById(R.id.icon);
TextView subtitle = (TextView) view.findViewById(R.id.subtitle);
subtitle.setText(data.getSubTitle());
title.setText(data.getTitle());
background.setImageDrawable(data.getBackground());
icon.setImageDrawable(data.getIcon());
return view;
}
}
and, My row.xml.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:id="#+id/relativeLayout1"
android:layout_width="75dip"
android:layout_height="82dip"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
<ImageView
android:id="#+id/background"
android:layout_width="75dip"
android:layout_height="83dip"
android:src="#drawable/mediumorchid" />
<ImageView
android:id="#+id/icon"
android:layout_width="35dip"
android:layout_height="35dip"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="#drawable/ic_discard" />
</RelativeLayout>
<FrameLayout
android:id="#+id/fl1"
android:layout_width="75dip"
android:layout_height="80dip"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</FrameLayout>
<RelativeLayout
android:id="#+id/width"
android:layout_width="fill_parent"
android:layout_height="80dip"
android:layout_alignBottom="#+id/fl1"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="#+id/fl1"
android:layout_toRightOf="#+id/fl1"
android:background="#ecf0f1" >
<RelativeLayout
android:id="#+id/item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
<TextView
android:id="#+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginBottom="10dip"
android:text="Pure"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="#+id/subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_below="#+id/title"
android:layout_marginTop="5dip"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>
</RelativeLayout>
<FrameLayout
android:id="#+id/frameLayout1"
android:layout_width="75dip"
android:layout_height="2dip"
android:layout_alignLeft="#+id/width"
android:layout_alignParentRight="true"
android:layout_below="#+id/width"
android:background="#drawable/cdivider" >
</FrameLayout>
This xml's Graphic Design
But in Device(example grouper) , i discover this problem.
In some object, (example see Help ~) Was centered properly. but, other objects, wasn't centered properly.
and i discover this problem another device(different resolution, size, Android version, density).
What can i do solve this problem??
Try this..
Add android:layout_centerHorizontal="true" for subtitle TextView
<TextView
android:id="#+id/subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/title"
android:layout_marginTop="5dip"
android:gravity="center_vertical"
android:layout_centerHorizontal="true"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
or this
<TextView
android:id="#+id/subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_below="#+id/title"
android:layout_marginTop="5dip"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
Related
I am working on an application in which I am using custom listview and for my listview I have define a row layout for customisation.
In my row layout I have two Relative layouts.
I want to dynamically remove that one Relative layout from my listview and then add it again.
Please help me how can I do that. I have added a screen shot of my layout you can see here
Below is my Row layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="#+id/r2_imageslayout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_persontext"
android:text="Per Person"
android:textSize="15sp"
android:textColor="#color/toolbar_color"
android:layout_marginLeft="150sp"
android:layout_marginTop="#dimen/size_8"
/>
<TextView
android:layout_width="100sp"
android:layout_height="wrap_content"
android:id="#+id/result2_price"
android:text="$568"
android:textSize="20sp"
android:textStyle="bold"
android:background="#color/yellow"
android:layout_alignParentRight="true"
android:layout_marginRight="#dimen/size_10"
android:layout_marginTop="#dimen/size_5"
android:paddingLeft="#dimen/size_15"
/>
<ImageView
android:layout_width="30sp"
android:layout_height="20sp"
android:contentDescription="#null"
android:layout_marginLeft="#dimen/size_10"
android:layout_marginTop="#dimen/size_30"
android:id="#+id/r2_departairlineimage"
android:src="#drawable/dl"
/>
<TextView
android:layout_width="40sp"
android:layout_height="20sp"
android:id="#+id/result2_flightcode"
android:text="SG250"
android:textSize="12sp"
android:layout_marginLeft="10sp"
android:layout_below="#+id/r2_departairlineimage"
/>
<ImageView
android:layout_width="30sp"
android:layout_height="20sp"
android:id="#+id/r2_depart_image"
android:layout_toRightOf="#+id/r2_departairlineimage"
android:layout_marginLeft="#dimen/size_15"
android:layout_marginTop="35sp"
android:src="#drawable/depart"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_departtime"
android:text="11:30"
android:textColor="#color/toolbar_color"
android:textSize="#dimen/size_15"
android:layout_toRightOf="#+id/r2_depart_image"
android:layout_marginLeft="#dimen/size_5"
android:layout_marginTop="36sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_dep_citycode"
android:text="Bos"
android:textSize="12sp"
android:layout_toRightOf="#+id/r2_departtime"
android:layout_marginTop="38sp"
android:layout_marginLeft="#dimen/size_3"
/>
<ImageView
android:layout_width="80sp"
android:layout_height="wrap_content"
android:id="#+id/r2_image"
android:contentDescription="#null"
android:src="#drawable/onestop_line"
android:layout_toRightOf="#+id/r2_dep_citycode"
android:layout_toEndOf="#+id/r2_dep_citycode"
android:layout_marginTop="42sp"
android:layout_marginLeft="#dimen/size_10"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_1stoptext"
android:text="1 stop"
android:textSize="12sp"
android:layout_toRightOf="#+id/r2_dep_citycode"
android:layout_toEndOf="#+id/r2_dep_citycode"
android:layout_marginTop="32sp"
android:layout_marginLeft="#dimen/size_30"
/>
<ImageView
android:layout_width="10sp "
android:layout_height="10sp"
android:id="#+id/r2_departclock"
android:layout_toRightOf="#+id/r2_dep_citycode"
android:layout_toEndOf="#+id/r2_dep_citycode"
android:layout_below="#+id/r2_1stoptext"
android:layout_marginTop="5sp"
android:src="#drawable/time_image"
android:layout_marginLeft="#dimen/size_30"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="15sp"
android:id="#+id/r2_dep_flightduration"
android:text="5h 60m"
android:textSize="12sp"
android:layout_below="#+id/r2_1stoptext"
android:layout_marginTop="#dimen/size_1"
android:layout_toRightOf="#+id/r2_departclock"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_arrivetime"
android:text="11:30"
android:textColor="#color/toolbar_color"
android:textSize="#dimen/size_15"
android:layout_toRightOf="#+id/r2_image"
android:layout_marginLeft="#dimen/size_5"
android:layout_marginTop="36sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_arrive_citycode"
android:hint="Was"
android:textSize="12sp"
android:layout_toRightOf="#+id/r2_arrivetime"
android:layout_marginTop="38sp"
android:layout_marginLeft="#dimen/size_3"
/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="#+id/result2_returnlayout" >
<ImageView
android:layout_width="30sp"
android:layout_height="20sp"
android:contentDescription="#null"
android:layout_marginLeft="#dimen/size_10"
android:layout_marginTop="#dimen/size_80"
android:id="#+id/r2_return_airlineimage"
android:src="#drawable/dl"
/>
<TextView
android:layout_width="40sp"
android:layout_height="20sp"
android:id="#+id/result2_returnflightcode"
android:text="SG250"
android:textSize="12sp"
android:layout_marginLeft="10sp"
android:layout_below="#+id/r2_return_airlineimage" />
<ImageView
android:layout_width="30sp"
android:layout_height="20sp"
android:id="#+id/r2_return_image"
android:layout_toRightOf="#+id/r2_return_airlineimage"
android:layout_marginLeft="#dimen/size_15"
android:layout_marginTop="80sp"
android:src="#drawable/return_image" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_return_deptime"
android:text="11:30"
android:textColor="#color/toolbar_color"
android:textSize="#dimen/size_15"
android:layout_toRightOf="#+id/r2_return_image"
android:layout_marginLeft="#dimen/size_5"
android:layout_marginTop="80sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_return_depcitycode"
android:text="Bos"
android:textSize="12sp"
android:layout_toRightOf="#+id/r2_return_deptime"
android:layout_marginTop="82sp"
android:layout_marginLeft="#dimen/size_3"/>
<ImageView
android:layout_width="80sp"
android:layout_height="10sp"
android:id="#+id/r2_ret_image"
android:contentDescription="#null"
android:src="#drawable/nonstop"
android:layout_toRightOf="#+id/r2_return_depcitycode"
android:layout_toEndOf="#+id/r2_return_depcitycode"
android:layout_marginTop="85sp"
android:layout_marginLeft="#dimen/size_10"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_return_nonstoptext"
android:text="Non stop"
android:textSize="12sp"
android:layout_toRightOf="#+id/r2_return_depcitycode"
android:layout_toEndOf="#+id/r2_return_depcitycode"
android:layout_marginTop="75sp"
android:layout_marginLeft="#dimen/size_25" />
<ImageView
android:layout_width="10sp "
android:layout_height="10sp"
android:id="#+id/r2_ret_clock"
android:layout_toRightOf="#+id/r2_return_depcitycode"
android:layout_toEndOf="#+id/r2_return_depcitycode"
android:layout_below="#+id/r2_return_nonstoptext"
android:layout_marginTop="5sp"
android:src="#drawable/time_image"
android:layout_marginLeft="#dimen/size_30"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="15sp"
android:id="#+id/r2_ret_flightduration"
android:text="5h 60m"
android:textSize="12sp"
android:layout_marginTop="#dimen/size_1"
android:layout_below="#+id/r2_return_nonstoptext"
android:layout_toRightOf="#+id/r2_ret_clock"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_ret_arrivetime"
android:text="11:30"
android:textColor="#color/toolbar_color"
android:textSize="#dimen/size_15"
android:layout_toRightOf="#+id/r2_ret_image"
android:layout_marginLeft="#dimen/size_5"
android:layout_marginTop="80sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/r2_ret_arrivecitycode"
android:text="Was"
android:textSize="12sp"
android:layout_toRightOf="#+id/r2_ret_arrivetime"
android:layout_marginTop="82sp"
android:layout_marginLeft="#dimen/size_3"/>
</RelativeLayout>
</RelativeLayout>
That's my adapter code:
Result2Adapter(Context context, List list_row)
{
// super(context, resourceID, list_row);
this.context=context;
this.list_row=list_row;
}
#Override
public int getCount() {
return list_row.size();
}
#Override
public Custom_Result getItem(int position) {
return list_row.get(position);
}
#Override
public long getItemId(int position) {
return position;
}
private class ViewHolder
{
ImageView DepAirline_logo, Ret_Airlinelogo;
TextView Dep_Airline_code,dep_time,dep_arr_time,dep_stops,dep_duration,Dep_dep_citycode,Dep_arrivecitycode,Ret_dep_citycode,Ret_arrivecitycode,Ret_Airline_code,Ret_time,Ret_arr_time,
Ret_stops,Ret_duration,price;
}
#Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if(convertView==null){
convertView=inflater.inflate(R.layout.result2_rowlayout,null);
holder=new ViewHolder();
holder. DepAirline_logo=(ImageView) convertView.findViewById(R.id.r2_departairlineimage);
holder.Dep_Airline_code=(TextView) convertView.findViewById(R.id.result2_flightcode);
holder.dep_time=(TextView) convertView.findViewById(R.id.r2_departtime);
holder.dep_arr_time=(TextView) convertView.findViewById(R.id.r2_arrivetime);
holder.Dep_arrivecitycode=(TextView) convertView.findViewById(R.id.r2_arrive_citycode);
holder.dep_stops=(TextView) convertView.findViewById(R.id.r2_1stoptext);
holder.dep_duration=(TextView) convertView.findViewById(R.id.r2_dep_flightduration);
holder.price=(TextView) convertView.findViewById(R.id.result2_price);
holder.Dep_dep_citycode=(TextView) convertView.findViewById(R.id.r2_dep_citycode);
holder.Ret_Airlinelogo = (ImageView) convertView.findViewById(R.id.r2_return_airlineimage);
holder.Ret_Airline_code = (TextView) convertView.findViewById(R.id.result2_returnflightcode);
holder.Ret_time = (TextView) convertView.findViewById(R.id.r2_return_deptime);
holder.Ret_arr_time = (TextView) convertView.findViewById(R.id.r2_ret_arrivetime);
holder.Ret_arrivecitycode = (TextView) convertView.findViewById(R.id.r2_ret_arrivecitycode);
holder.Ret_dep_citycode = (TextView) convertView.findViewById(R.id.r2_return_depcitycode);
holder.Ret_stops = (TextView) convertView.findViewById(R.id.r2_return_nonstoptext);
holder.Ret_duration = (TextView) convertView.findViewById(R.id.r2_ret_flightduration);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
String retimagename=list_row.get(position).getDep_Airline_code().toLowerCase();
String retpath="drawable/"+retimagename;
int retimageresource=context.getResources().getIdentifier(retpath, null, context.getPackageName());
String imagename=list_row.get(position).getRet_Airline_code().toLowerCase();
String path="drawable/"+imagename;
int imageresource=context.getResources().getIdentifier(path, null, context.getPackageName());
if(imageresource==0)
{
imageresource=R.drawable.flight_icon;
}
if(retimageresource==0)
{
imageresource=R.drawable.flight_icon;
}
Drawable image=context.getResources().getDrawable(imageresource);
Drawable retimage=context.getResources().getDrawable(imageresource);
holder.DepAirline_logo.setImageDrawable(image);
holder.Ret_Airlinelogo.setImageDrawable(retimage);
holder.Dep_Airline_code.setText(list_row.get(position).getDep_Airline_name());
holder.Ret_Airline_code.setText(list_row.get(position).getRet_Airline_name());
holder.dep_time.setText(list_row.get(position).getDepart_time());
holder.Ret_time.setText(list_row.get(position).getRet_dep_time());
holder.dep_arr_time.setText(list_row.get(position).getArrive_time());
holder.Ret_arr_time.setText(list_row.get(position).getRet_arr_time());
holder.dep_stops.setText(list_row.get(position).getDep_stops());
holder.Ret_stops.setText(list_row.get(position).getRet_stops());
holder.dep_duration.setText(list_row.get(position).getDep_duration());
holder.Ret_duration.setText(list_row.get(position).getRet_duration());
holder.Dep_arrivecitycode.setText(list_row.get(position).getDep_CityCode());
holder.Ret_arrivecitycode.setText(list_row.get(position).getArr_citycode());
holder.Ret_dep_citycode.setText(list_row.get(position).getRet_dep_citycode());
holder.Ret_arrivecitycode.setText(list_row.get(position).getRet_arr_citycoode());
holder.price.setText(list_row.get(position).getPrice());
return convertView;
}
You could do that in the adapter class's getView method.
For a particular row by inflating the view and getting the relative layout by using findViewById().
e.g.,
RelativeLayout relativeLayout1 = (RelativeLayout) view.findViewById(R.id.relativeLayoutId);
You can hide the layout by using
relativeLayout1.setVisibility(View.GONE);
and unhide using
relativeLayout1.setVisibility(View.VISIBLE);
I have the following layout which corresponds to a row in a list view. I wanted the TextView in the middle to expand based on the length of text.
With the below layout, my textview is not even visible. Can someone point out what mistake I am doing?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="3dip"
android:paddingLeft="6dip"
android:paddingRight="6dip" >
<ImageView
android:id="#+id/imageView1"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerVertical="true"
android:clickable="true"
android:scaleType="fitXY"
android:src="#drawable/batman" />
<LinearLayout
android:id="#+id/user_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="#+id/imageView1"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingTop="5dp" >
<TextView
android:id="#+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#color/display_name_color"
android:textSize="14dp" />
<TextView
android:id="#+id/handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dp"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="12dp" />
</LinearLayout>
<LinearLayout
android:id="#+id/actions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toRightOf="#+id/imageView1"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp" >
<ImageView
android:id="#+id/favourite"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="40dp"
android:src="#drawable/ic_launcher" />
<ImageView
android:id="#+id/bookmark"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="60dp"
android:src="#drawable/ic_launcher" />
</LinearLayout>
<TextView
android:id="#+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="#+id/actions"
android:layout_below="#+id/user_info"
android:layout_toRightOf="#+id/imageView1"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
and this is my adapter's getView function.
#Override
public View getView(int position, View convertView, ViewGroup container) {
ImageView imageView;
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.list_row, container, false);
imageView = (ImageView)convertView.findViewById(R.id.imageView1);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (ImageView)convertView.findViewById(R.id.imageView1);
}
imageView.setTag(position);
imageView.setOnClickListener(new OnClickListener() {
#Override
public void onClick(View v) {
int position = Integer.parseInt(v.getTag().toString());
mOnProfilePicClickCallback.onItemClick(position);
}
});
//Load TextFields here
Feed feed = (Feed) getItem(position);
User user = null;
if (feed != null) {
user = (User) CommonData.users.get(feed.owner);
TextView handle = (TextView) convertView.findViewById(R.id.handle);
TextView userName = (TextView) convertView.findViewById(R.id.username);
TextView feedContent = (TextView) convertView.findViewById(R.id.feedcontent);
handle.setText(feed.owner);
if(tweeter!=null && !TextUtils.isEmpty(user.displayname))
{
userName.setText(user.displayname);
}
else
{
userName.setText(feed.owner);
}
feedContent.setText(feed.feedcontent);
}
// Finally load the image asynchronously into the ImageView, this also takes care of
// setting a placeholder image while the background thread runs
if(user!=null)
{
mImageFetcher.loadImage(user.profileimageurl, imageView);
}
return convertView;
}
Try this...
Remove android:layout_above="#+id/actions"from your "content" TextView
Add android:layout_below="#+id/content" to your "actions" LinearLayout
Remove android:layout_alignParentBottom="true"from "actions"
It may work, if it still doesn't use LinearLayouts instead of RelativeLayout.
In my ListView, every row height changes automaticly according the data.
i want to change the textview size runtime dynamically which is used in listview but is not take any effect on textview i divide after getting my screen width in 6 part after getting screen width runtime i am assign the textview size from screen width but this textview is in different layout so how to take this layout in my layout and change the size of textview runtime
here i put my layout
Home.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="#+id/textlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="12"
android:layout_weight="1"
android:gravity="center">
<TextView
android:id="#+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="#drawable/flightlist"
android:text="Destination"
android:textSize="17dp"
android:textStyle="bold" />
<TextView
android:id="#+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Flight"
android:textSize="17dp"
android:textStyle="bold" />
<TextView
android:id="#+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="#drawable/flightlist"
android:text="Airlines"
android:textSize="17dp"
android:textStyle="bold" />
<TextView
android:id="#+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Schedule"
android:textSize="17dp"
android:textStyle="bold" />
<TextView
android:id="#+id/text5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Term Gate"
android:textSize="17dp"
android:textStyle="bold"
android:background="#drawable/flightlist" />
<TextView
android:id="#+id/text6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Status"
android:textSize="17dp"
android:textStyle="bold" />
</LinearLayout>
<ListView
android:id="#+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="10"
>
</ListView>
</LinearLayout>
list.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="6"
android:gravity="center">
<TextView
android:id="#+id/textdestination"
android:layout_width="183dp"
android:layout_height="fill_parent"
android:text="Destination"
android:textSize="15dp"
android:gravity="center"
/>
<TextView
android:id="#+id/textflight"
android:layout_width="105dp"
android:layout_height="fill_parent"
android:text="Flight"
android:textSize="15dp"
android:gravity="center"
android:background="#drawable/flightlist"
/>
<TextView
android:id="#+id/textairline"
android:layout_width="185dp"
android:layout_height="fill_parent"
android:text="Airlines"
android:textSize="15dp"
android:gravity="center"/>
<TextView
android:id="#+id/textschedule"
android:layout_width="73dp"
android:layout_height="fill_parent"
android:text="Schedule"
android:textSize="15dp"
android:gravity="center"
android:background="#drawable/flightlist"
/>
<TextView
android:id="#+id/texttermgate"
android:layout_width="105dp"
android:layout_height="fill_parent"
android:text="Term Gate"
android:textSize="15dp"
android:gravity="center"
/>
<TextView
android:id="#+id/textstatus"
android:layout_width="73dp"
android:layout_height="fill_parent"
android:text="Status"
android:textSize="15dp"
android:gravity="center"
android:background="#drawable/flightlist"/>
</LinearLayout>
HomeActivity.java
View inflater=getLayoutInflater().inflate(R.layout.list2, list, false);
TextView textdestination=(TextView)inflater.findViewById(R.id.textdestination);
textdestination.setHeight(50);
textdestination.setWidth((textlayoutwidth*25)/100);
textdestination.setTextSize(100);
You can do that in the getView() method of the Adapter you use for the ListView.
mInflater = (LayoutInflater) mActivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list, parent,
false);
holder.tv1 = (TextView) convertView
.findViewById(R.id.textdestination);
holder.tv2 = (TextView) convertView
.findViewById(R.id.textflight);
holder.tv3 = (TextView) convertView
.findViewById(R.id.textairline);
.......
.......
.......
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(someCondition){
holder.tv1.setLayoutParams(new LinearLayout.LayoutParams(50,50));
holder.tv2setLayoutParams(new LinearLayout.LayoutParams(50,50));
holder.tv3.setLayoutParams(new LinearLayout.LayoutParams(50,50));
.....
.....
.....
}
return convertView;
}
you can change your textview width and height on runtime with :
textdestination.setWidth(pixels);
textdestination.setHeight(pixels);
I am not able to align a text below imageview in a listview. below is my code.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center" >
<ImageView
android:id="#+id/icon"
android:layout_width="wrap_content"
android:layout_height="50dp" />
<TextView
android:id="#+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/icon"
android:layout_alignParentBottom="true"
android:gravity="center"
android:singleLine="true"
android:layout_marginLeft="20dp"
android:textColor="#color/white"/>
</RelativeLayout>
and ListView is
<ListView android:id="#+id/grid_view"
android:layout_width="wrap_content"
android:layout_height="280sp"
android:layout_alignParentLeft="true"
android:layout_marginTop="20dp"
android:layout_toLeftOf="#+id/imgView"
android:scrollbars="none"
android:divider="#null"
android:gravity="center" >
</ListView>
java code to dynamically add text and image from array
#Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = l_Inflater.inflate(R.layout.gridview_layout, null);
holder = new ViewHolder();
holder.imageName = (TextView) convertView.findViewById(R.id.name);
holder.image = (ImageView) convertView.findViewById(R.id.icon);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.imageName.setText(name[position]);
holder.image.setImageResource(mThumbIds[position]);
return convertView;
}
not getting how to center text below imageview. please help me to solve this problem.
Simply use the layout_centerHorizontal attribute in your TextView:
<TextView
android:id="#+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/icon"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:singleLine="true"
android:textColor="#color/white" />
In textview change
android:layout_width="wrap_content"
to
android:layout_width="match_parent"
You should use Linear layout to set orientation attribute. Set orientation to vertical for Linear layout and set imageview attribute android:layout_gravity="center"
Here is the complete code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="#dimen/activity_horizontal_margin"
android:layout_marginRight="#dimen/activity_horizontal_margin"
android:layout_marginTop="#dimen/activity_horizontal_margin"
android:layout_marginBottom="#dimen/activity_horizontal_margin"
>
<ImageView
android:id="#+id/grid_item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="#drawable/home" >
</ImageView>
<TextView
android:id="#+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cardiology"
android:layout_gravity="center"
android:layout_marginTop="5px"
android:textSize="20sp" >
</TextView>
</LinearLayout>
hope it will help
I am trying to make a listview, every row contains an imageview and two text views. The image and the second textview is shown but the first textview is blank...Can't figure out what's wrong...I can't wrap my head around custom list adapters...I have read http://commonsware.com/Android/excerpt.pdf to.
My data is loaded correctly to the arraylist.
My code:
private class SongAdapter extends ArrayAdapter<Szam> {
private ArrayList<Szam> items;
public SongAdapter(Context context, int textViewResourceId, ArrayList<Szam> items) {
super(context, textViewResourceId, items);
this.items = items;
}
#Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
Szam o = items.get(position);
if (o != null) {
TextView tt = (TextView) v.findViewById(R.id.firstLine);
TextView bt = (TextView) v.findViewById(R.id.secondLine);
if (tt != null) {
tt.setText(o.getArtist()); }
if(bt != null){
bt.setText(o.getTitle());
}
}
return v;
}
And my xml layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:minHeight="?android:attr/listPreferredItemHeight"
android:layout_height="wrap_content" android:padding="6dip">
<TextView android:id="#+id/secondLine" android:layout_width="fill_parent"
android:layout_height="26dip" android:layout_toRightOf="#+id/icon"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" android:singleLine="true"
android:ellipsize="marquee"
android:text="Simple application that shows how to use RelativeLayout" />
<TextView android:id="#+id/firstLine" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_toRightOf="#+id/icon"
android:layout_alignParentRight="true" android:layout_alignParentTop="true"
android:layout_above="#id/secondLine"
android:layout_alignWithParentIfMissing="true" android:gravity="center_vertical"
android:text="My Application" />
<ImageView android:layout_marginRight="6dip" android:id="#+id/icon"
android:src="#drawable/play" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_alignParentLeft="true"></ImageView>
</RelativeLayout>
The corrected layout is:
<TextView android:id="#+id/secondLine1" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_toRightOf="#+id/icon"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" android:singleLine="true"
android:ellipsize="marquee"
android:textColor="#ffffff"
android:textSize="12sp"
android:text="Simple application that shows how to use RelativeLayout" />
<TextView android:id="#+id/firstLine1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_toRightOf="#+id/icon"
android:layout_alignParentRight="true" android:layout_alignParentTop="true"
android:ellipsize="marquee"
android:textColor="#ffffff"
android:textSize="16sp"
android:layout_alignWithParentIfMissing="true"
android:text="My Application" />
<ImageView android:layout_marginRight="6dip" android:id="#+id/icon"
android:src="#drawable/play" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_alignParentLeft="true"></ImageView>
Can't you use LinearLayouts?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:minHeight="?android:attr/listPreferredItemHeight" android:layout_height="wrap_content" android:padding="6dip">
<ImageView android:layout_marginRight="6dip" android:id="#+id/icon" android:src="#drawable/play" android:layout_width="wrap_content"
android:layout_height="fill_parent"></ImageView>
<LinearLayout android:id="#+id/linearLayout1" android:layout_width="wrap_content" android:orientation="vertical"
android:layout_height="wrap_content">
<TextView android:text="My Application" android:layout_height="wrap_content" android:gravity="center_vertical" android:id="#+id/firstLine"
android:layout_width="fill_parent"></TextView>
<TextView android:singleLine="true" android:text="Simple application that shows how to use RelativeLayout" android:layout_height="wrap_content"
android:ellipsize="marquee" android:id="#+id/secondLine" android:layout_width="fill_parent"></TextView>
</LinearLayout>
</LinearLayout>