在所有现有 children 之上使用新的 child 膨胀视图
Inflate view with new child above all existing children
刚刚接触 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
将新的猜测置于其他猜测之上,或者我认为这一切都是错误的?
您可以使用 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);
}
index int: the position at which to add the child
我不确定这是否是处理此类行为的最佳方式。
我建议将 LinearLayout
替换为 ListView
或 RecyclerView
(哪个最适合您)并向适配器添加新项目。
这样您就可以控制要将新项目添加到哪个位置。
此外,将所有数据放在一个列表中可以让您更好地控制它(从我的角度来看)。
刚刚接触 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
将新的猜测置于其他猜测之上,或者我认为这一切都是错误的?
您可以使用 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);
}
index int: the position at which to add the child
我不确定这是否是处理此类行为的最佳方式。
我建议将 LinearLayout
替换为 ListView
或 RecyclerView
(哪个最适合您)并向适配器添加新项目。
这样您就可以控制要将新项目添加到哪个位置。
此外,将所有数据放在一个列表中可以让您更好地控制它(从我的角度来看)。