2016-06-17 14 views
1

ちょうど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を使用して、他人の上に新しい推測を配置する方法があるのでしょうか、それともこのすべてについて間違って考えていますか?

答えて

1

あなたは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から:

インデックスint型:の位置は、子を追加する

1

私はこれかどうかわからないんだけどそのような行動を処理する最善の方法です。

LinearLayoutListViewまたはRecyclerView(あなたに最適なもの)に置き換えて、新しい項目をアダプターに追加することをお勧めします。 これにより、新しいアイテムを追加する位置を制御することができます。 さらに、すべてのデータをリストに入れておくと、(私の観点から)より多くのデータを管理することができます。

+0

これはより良い答えだと思いますが、@ user13の答えは実際にこの質問の内容を説明しています。私はなぜこれがダウン投票を持っているのか分からない。 – nexus5x

+0

私はuser13の答えを受け入れるつもりですが、あなたは正しいです - 私はListViewが私が望むものだと思います。正しい方向に私を指摘していただきありがとうございます!私はまだ長い道のりがありますが、物事はゆっくりとつなぎ合っています。 –

+0

まあ、user13はあなたの質問に答えました。私はちょうど別の解決策を出しました。 私の主な関心事は、常にUIとデータのコントロールがその中にあることを確認することです。 – Marijan

関連する問題