2016-05-09 2 views
1

ユーザーが情報を入力できるテキストフィールドを作成するためにボタンを取得しようとしています。こうすることで、彼らは好きなだけ多くの行を作成することができます。また、一度に複数のフィールドを作成する方法はありますか? だから、それはこのようなものになってしまうでしょう:動的にテキストフィールドを作成する

「イベントを追加」(彼らはそのボタンをクリックするまで、画面の残りの部分は空白である)

テキストフィールド1 /テキストフィールド2 /テキストフィールド3

(彼らはそのボタンや下線なしもちろん、単なる一例キーを押したときに)そこで彼らは、彼らが欲しいという情報に置くことができます。別の行が必要な場合は、[追加]ボタンをもう一度クリックします。

私はonClickListenerを使用していますか?私は、ボタンをユーザのためにそのフィールドを作成させる方法について、混乱しています。私がこれまで持っているものである

public class BudgetScreen extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_budget_screen); 

    Button addBillExpense = (Button) findViewById(R.id.addBillExpense); 

    addBillExpense.setOnClickListener(new Button.OnClickListener() { 
     public void onClick (View v) { 

      TextView inputField = new TextView(BudgetScreen.this); 

     } 
    }); 
} 

}

。私は熱いうちにこれについてきた。私はまだ "inputField"を使用していないことを知っています。あなたが好きなレイアウトを得るためにLayoutParamsを変更することができます

LinearLayout layout = (LinearLayout) findViewById(R.id.holder); 
EditText et = new EditText(this); 
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 
layout.addView(et,lp); 

:あなたはのようなものを持つことができますonClickListenerボタンで

<LinearLayout ...> 
    <Button .../> 
    <LinearLayout ... 
    android:id="@+id/holder" 
    android:orientation="vertical"> 

    </LinearLayout> 
</LinearLayout> 

+0

onClickListenerを使用してみてください。期待通りのことをしなければ、コードを掲示し、それが何をしているのか、何を期待しているのかを説明します。スタックオーバーフローは、そのような特定の質問で最も効果的です。 –

+0

RecyclerViewsを見てください – zafrani

答えて

1

では、次のレイアウトのXMLがあるとします。

あなたが一列に複数のEditTextをしたい場合は、あなたが行うことができ、次の

final int NUM_EDITTEXT_PER_ROW = 3; 
    LinearLayout layout = (LinearLayout) findViewById(R.id.holder); 
    Display display = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = display.getWidth()/NUM_EDITTEXT_PER_ROW; 
    LinearLayout tempLayout = new LinearLayout(this); 
    tempLayout.setOrientation(LinearLayout.HORIZONTAL); 
    for(int i=0;i<NUM_EDITTEXT_PER_ROW;i++){ 
     EditText et = new EditText(this); 
     LayoutParams lp = new LayoutParams(width,LayoutParams.WRAP_CONTENT); 
     tempLayout.addView(et,lp); 
    } 
    layout.addView(tempLayout); 
+0

これは非常に遅い応答ですが、これは相対レイアウトでは機能しませんか?私はそれを試したので、私はIDEでたくさんのエラーが出るだけです。私がしたのは、 "LinearLayout"のすべてを "RelativeLayout"に置き換えることでした。 – AbhorDeities

+0

LinearLayoutに固有で、RelativeLayoutで使用されないような「向き」のようなレイアウト属性は避けてください。 LinearLayoutからRelativeLayoutに変更するたびに、子の位置を相対的に設定する必要があります。 –

関連する問題