我有一个活动,在里面我有一个线性布局(让我们把它命名为“主线性布局”),我在其中添加动态创建的视图(文本视图,线性布局,编辑文本,...等)。
屏幕底部有两个按钮(下一个和后一个)。
如果用户单击下一个按钮,我应该将当前的“主线性布局”保存在列表中,然后我生成一个新视图,然后将其添加到“主线性布局”中。
如果用户点击后退按钮,我应该恢复“主线性布局”并显示其所有视图。
我不知道怎么做。
我希望我的描述清楚:)
答案 0 :(得分:0)
在离开其他活动或屏幕方向时,请查看onSaveInstance以保留主屏幕上的视图。
您还可以尝试使用按钮隐藏布局,而不是尝试浏览布局。
答案 1 :(得分:0)
这可能会对你有所帮助。但具体的代码需要你自己写。
public class TestActivity extends Activity{
Stack<LinearLayout> layouts = new Stack<>();
FrameLayout container;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button btnPre = new Button(this);
Button btnNext = new Button(this);
btnPre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
container.addView(layouts.pop());
}
});
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout linearLayout = (LinearLayout) container.getChildAt(0);
layouts.push(linearLayout);
container.removeAllViews();
container.addView(createNextView());
}
});
}
private LinearLayout createNextView(){
LinearLayout linearLayout = new LinearLayout(this);
return linearLayout;
}
}
答案 2 :(得分:0)
谢谢大家的意见。
我没有测试Cyrus的答案。我会发布我的答案,以防有人在Xamarin.Android中遇到同样的问题,因为我正在使用它。
我这样修好了:
我在下一个按钮点击事件和上一个按钮点击事件中添加了这个:
AddQuestionsLinearLayoutToPagesLinearLayoutsList();
当然,您可以按照自己的方式更改AddQuestionsLinearLayoutToPagesLinearLayoutsList()主体:
private void AddQuestionsLinearLayoutToPagesLinearLayoutsList()
{
//Create a new linear layout to add views into it and saved it in _mPagesLinearLayouts list at index _mPageIndex
LinearLayout savedLinearLayout = new LinearLayout(this);
//List of _mQuestionsLinearLayout views
List<View> views = new List<View>();
//Add all _mQuestionsLinearLayout to views list
for (int i = 0; i < _mQuestionsLinearLayout.ChildCount; i++)
{
views.Add(_mQuestionsLinearLayout.GetChildAt(i));
}
//Remove views from main questions linear layout
_mQuestionsLinearLayout.RemoveAllViews();
//Add all views from the views list to savedLinearLayout
for (int i = 0; i < views.Count; i++)
{
savedLinearLayout.AddView(views[i]);
}
//Add savedLinearLayout to _mPagesLinearLayouts list at index _mPageIndex
_mPagesLinearLayouts.Insert(_mPageIndex, savedLinearLayout);
}
在创建视图方法时:
if(NeedToCreateViews())
{
//create views here and add it to _mQuestionsLinearLayout
}
//Get all saved views and add it to _mQuestionsLinearLayout
else
{
//List of _mPagesLinearLayouts[_mPageIndex] LinearLayout views
List<View> views = new List<View>();
//Add all _mPagesLinearLayouts[_mPageIndex] LinearLayout to views list
for (int i = 0; i < _mPagesLinearLayouts[_mPageIndex].ChildCount; i++)
{
views.Add(_mPagesLinearLayouts[_mPageIndex].GetChildAt(i));
}
//Remove all views from _mPagesLinearLayouts[_mPageIndex] linear layout
_mPagesLinearLayouts[_mPageIndex].RemoveAllViews();
//Remove the linear layout at index _mPageIndex
_mPagesLinearLayouts.RemoveAt(_mPageIndex);
//Add all views from views list to _mQuestionsLinearLayout
for (int i = 0; i < views.Count; i++)
{
_mQuestionsLinearLayout.AddView(views[i]);
}
}