在所有现有孩子的上方为新孩子提供视图

时间:2016-06-17 06:32:16

标签: android layout-inflater

刚刚接触LayoutInflater及其功能,并提出了一个愚蠢的问题。我正在制作一个游戏布局,其中玩家进行了未知数量的猜测,我想将每个新猜测扩展到guessContainer以上所有以前的猜测。

相关xml:

<LinearLayout
    android:id="@+id/guessContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal"
    android:orientation="vertical"></LinearLayout>

相关的java:

private void addNewGuess(){
    ViewGroup guessContainer = (ViewGroup)findViewById(R.id.guessContainer);
    View newGuess = getLayoutInflater().inflate(R.layout.guess_new, null);
    guessContainer.addView(newGuess);
}

上述代码按预期工作 - 每次调用addNewGuess时,都会在所有其他代码下生成R.layout.guess_new的新副本。有没有办法扭转这种行为并使用LayoutInflater在其他人之上进行新的猜测或者我是否认为这一切都错了?

2 个答案:

答案 0 :(得分:2)

您可以使用addView(View child, int index)

private void addNewGuess(){
    ViewGroup guessContainer = (ViewGroup)findViewById(R.id.guessContainer);
    View newGuess = getLayoutInflater().inflate(R.layout.guess_new, null);
    guessContainer.addView(newGuess, 0);
}

来自documentation

  

index int:添加子项的位置

答案 1 :(得分:1)

我不确定这是否是处理此类行为的最佳方式。

我建议将LinearLayout替换为ListViewRecyclerView(哪一个最适合您)并向适配器添加新项目。 这样您就可以控制添加新项目的位置。 此外,将所有数据放在列表中可以让您更好地控制它(从我的角度来看)。