Android開発者にとってはまったく新しいもので、小さなコードで何が壊れているのかを理解しようとしています.
私は相対レイアウトを持っています(これが私のニーズに最も合っていると思います)。activity_main.xml ファイルで指定した行に 2 つのボタンが一緒に配置されています。ボタンの 1 つを押すと、最後の項目セットの下の同じ行に EditText フィールドとボタンが繰り返し表示されるようにします。このようなちょっと:
ボタン ボタン
| | _ _| ボタン
私の関数は、最初のタップで期待する場所に EditText を追加しますが、最終的には次のような 3 つのボタンの行になります。
ボタン ボタン ボタン
| | _ _|
コードは以下のとおりです。相対レイアウトについて何か不足していますか? 私はひどく失敗した方法で要素にアクセスしていますか?
//Get main layout as defined in activity_main.xml
final RelativeLayout rl = (RelativeLayout)this.findViewById(R.id.rootLayout);
//Setup rules
final RelativeLayout.LayoutParams below = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final RelativeLayout.LayoutParams right = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
newTimer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
below.addRule(RelativeLayout.BELOW,rl.getChildAt(rl.getChildCount()-1).getId() );
EditText timerName = new EditText(MainActivity.this);
Button btnAddNewTimer = new Button(MainActivity.this);
timerName.setText("New Timer");
timerName.setVisibility(View.VISIBLE);
timerName.setLayoutParams(below);
rl.addView(timerName);
right.addRule(RelativeLayout.RIGHT_OF,rl.getChildAt(rl.getChildCount()-1).getId());
btnAddNewTimer.setText("Add");
btnAddNewTimer.setVisibility(View.VISIBLE);
btnAddNewTimer.setLayoutParams(right);
rl.addView(btnAddNewTimer);
}
});