LinearLayout with animation在Android上更改我的子布局项目
你好吗 我有个问题,我试了很多次来解决它。但我没有成功。让我们来看问题: 我列出了一些“任务”,最初我是这样做的: 布局/fragment_list.xml:LinearLayout with animation在Android上更改我的子布局项目,android,xml,android-layout,animation,layout,Android,Xml,Android Layout,Animation,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:l
<?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>
列表中的项目是
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>
好吧,我想要的方式,看:
(我在Java代码上设置的颜色)
所以,我决定做一个“布局动画改变”
(如-->developer.android.com/training/animation/layout.html)
然后,我将layout/fragment_list.xml(如Android开发者网站上的应用程序)替换为
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>
这个新的布局改变了我的布局项配置,我不能再配置了。看:
我想有一个“布局改变动画”与我的老风格。有人能帮我吗?
我非常感谢大家的关注!!!
谢谢大家! 我设法解决了这个问题。我使用以下代码操作布局:
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);
return 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);
}
}
然后,从过去的上下文中丢失了信息
要解决它,我必须更改行:
final ViewGroup newView = (ViewGroup) LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.task, mContainerView, false);
并将ir替换为:
final ViewGroup newView = (ViewGroup) getActivity().getLayoutInflater().inflate(R.layout.task, mContainerView, false);