Sunday, 15 April 2012

xml - LinearLayout with animation changes my sub-layout items on Android -



xml - LinearLayout with animation changes my sub-layout items on Android -

how you?

i have problem, , seek much times prepare it. didn't have success. let's go problem:

i have list "tasks" , did so:

layout/fragment_list.xml:

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <progressbar android:id="@+id/loading_progress" style="?android:attr/progressbarstylelarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:layout_gravity="center" /> <listview android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/listview" android:layout_gravity="center_horizontal" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margintop="10dp" android:textappearance="?android:attr/textappearancemedium" android:textstyle="bold" android:id="@+id/no_item_message" android:visibility="invisible" /> </linearlayout>

and item of list is

layout/tasks.xml:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:showdividers="middle" android:divider="?android:dividervertical"> <checkbox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/task_checkbox" android:clickable="true" android:enabled="true" android:singleline="false" android:gravity="center_horizontal" android:layout_margintop="20dp" android:layout_marginleft="10dp" android:layout_marginright="10dp" android:visibility="visible"/> <linearlayout android:orientation="vertical" android:layout_width="245dp" android:layout_height="wrap_content" android:layout_marginleft="10dp" android:id="@+id/task_container"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margintop="5dp" android:layout_marginright="10dp" android:textappearance="?android:attr/textappearancemedium" android:hint="@string/title_task" android:id="@+id/title_task" android:layout_gravity="left|center_vertical" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginright="10dp" android:hint="@string/task_vinculado" android:id="@+id/task_vinculado" android:layout_gravity="left|center_vertical" android:layout_margintop="5dp" /> <textview android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginright="10dp" android:layout_marginbottom="5dp" android:hint="@string/limit_date" android:id="@+id/limit_date" android:layout_gravity="left|center_vertical" /> </linearlayout> <imagebutton android:id="@+id/delete_task_button" android:layout_marginleft="5dp" android:layout_margintop="15dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_action_discard" android:background="?android:selectableitembackground" android:contentdescription="@string/action_remove_item" /> </linearlayout>

and right, way wanted, look:

layout preview 1 (the colors set on java code)

so, decided "layout animation changes" (like --> developer.android.com/training/animation/layout.html)

then, did replace layout/fragment_list.xml (like app showed android developers web site)

layout/test.xml:

<framelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <scrollview android:layout_width="match_parent" android:layout_height="match_parent"> <linearlayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:showdividers="middle" android:divider="?android:dividerhorizontal" android:animatelayoutchanges="true" android:paddingleft="5dp" android:paddingright="5dp" /> </scrollview> <textview android:id="@android:id/empty" style="?android:textappearancesmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/no_task" android:padding="32dp" android:textcolor="?android:textcolorsecondary" /> </framelayout>

and new layout alter layout item configuration, , cannot configure anymore. look:

layout preview 2

i want have "layout alter animation" old style. can help me? extremely grateful attention!!! give thanks you!

i managed solve problem. manipulating layout next code:

public class taskfragment extends fragment { private viewgroup mcontainerview; private view view; public taskfragment() { } @override public view oncreateview(final layoutinflater inflater, final viewgroup container, bundle savedinstancestate) { view = inflater.inflate(r.layout.teste, container, false); assert view != null; mcontainerview = (viewgroup) view.findviewbyid(r.id.container); homecoming view; } @override public void onstart(){ super.onstart(); contentresolver contentresolver = getactivity().getcontentresolver(); uri uri = nectarcontract.task.content_uri; cursor c = contentresolver.query(uri, nectarcontract.task.projection, null, null, null); assert c != null; while (c.movetonext()) { task task = new task(); task.setid(c.getint(nectarcontract.column_task_id)); task.settitle(c.getstring(nectarcontract.column_task_title)); task.setvinculado(c.getstring(nectarcontract.column_task_vinculado)); task.setend(c.getstring(nectarcontract.column_task_end)); task.setprioridade(c.getint(nectarcontract.column_task_prioridade)); view.findviewbyid(android.r.id.empty).setvisibility(view.gone); populate(task); } } private void populate(final task task){ final viewgroup newview = (viewgroup) layoutinflater.from(getactivity().getapplicationcontext()).inflate(r.layout.task, mcontainerview, false); checkbox checkbox = (checkbox) newview.findviewbyid(r.id.task_checkbox); checkbox.settag(task.getid()); textview title = (textview) newview.findviewbyid(r.id.title_task); textview vinculado = (textview) newview.findviewbyid(r.id.task_vinculado); textview end = (textview) newview.findviewbyid(r.id.limit_date); linearlayout container = (linearlayout) newview.findviewbyid(r.id.task_container); title.settext(task.gettitle()); if (task.getprioridade() == 0) { title.settextcolor(color.blue); } if (task.getprioridade() == 1) { title.settextcolor(0xffe29400); } if (task.getprioridade() == 2) { title.settextcolor(color.red); } vinculado.settext("vinculado a: " + task.getvinculado()); end.settext("data prevista: " + task.getendstring()); container.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { intent intent = new intent(getactivity().getapplicationcontext(), taskactivity.class); intent.putextra(arg_task, task); intent.putextra(taskactivity.user, user); intent.putextra(taskactivity.method, taskactivity.update); startactivityforresult(intent, 1); } }); newview.findviewbyid(r.id.delete_task_button).setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { mcontainerview.removeview(newview); if (mcontainerview.getchildcount() == 0) { view.findviewbyid(android.r.id.empty).setvisibility(view.visible); } } }); mcontainerview.addview(newview, 0); }

}

then, there loss of info past context

for solve it, have alter line:

final viewgroup newview = (viewgroup) layoutinflater.from(getactivity().getapplicationcontext()).inflate(r.layout.task, mcontainerview, false);

and replace ir for:

final viewgroup newview = (viewgroup) getactivity().getlayoutinflater().inflate(r.layout.task, mcontainerview, false);

android xml android-layout animation layout

No comments:

Post a Comment