将EditText从非子布局动态添加到另一个LinearLayout
本文关键字:添加 另一个 LinearLayout 动态 布局 EditText | 更新日期: 2023-09-27 18:26:58
我想在屏幕上有两个布局。一个是可滚动的,另一个应该包含一个按钮,可以向可滚动的布局添加内容,并且应该始终可见。我不确定我是否朝着正确的方向前进,但到目前为止,我已经做到了这一点,我的代码以我意想不到的方式工作。若单击buttonSPAddText
,则EditText将显示在与按钮相同的行中。我希望它以另一种布局linearLayoutSPTextHolder
出现在它们下面。
这是我的xaml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:p1="http://schemas.android.com/apk/res/android"
p1:orientation="vertical"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:id="@+id/linearLayoutSPMain">
<LinearLayout
p1:orientation="horizontal"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="51.0dp"
p1:id="@+id/linearLayoutSPButtonHolder"
p1:layout_weight="1">
<Button
p1:text="AddText"
p1:layout_width="wrap_content"
p1:layout_height="match_parent"
p1:id="@+id/buttonSPAddText"
p1:layout_weight="1" />
<Button
p1:text="Do nothing"
p1:layout_width="wrap_content"
p1:layout_height="match_parent"
p1:id="@+id/buttonSPDoNth"
p1:gravity="center_vertical"
p1:layout_weight="1" />
</LinearLayout>
<ScrollView
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="wrap_content"
p1:id="@+id/scrollViewSPText"
p1:layout_weight="6">
<LinearLayout
p1:orientation="vertical"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="wrap_content"
p1:id="@+id/linearLayoutSPTextHolder"
p1:scrollbars="horizontal" />
</ScrollView>
</LinearLayout>
以及我的活动:
namespace TiesaDrasaAndroid
{
[Activity (Label = "SelectPlayersActivity")]
public class SelectPlayersActivity : Activity
{
private int _textBoxId = 1000;
private LinearLayout _layout = null;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.SelectPlayers);
_layout = (LinearLayout)FindViewById(Resource.Id.linearLayoutSPTextHolder);
_layout.Orientation = Orientation.Vertical;
Button addPl = FindViewById<Button>(Resource.Id.buttonSPAddText);
addPl.Click += delegate {
this.CreateUserTextBox ();
};
}
private void CreateUserTextBox()
{
var textbox = new EditText (this);
textbox.Id = _textBoxId;
textbox.SetWidth (100);
_textBoxId++;
_layout.AddView (textbox);
}
}
这段代码对我来说效果很好:
public class MainActivity extends Activity {
private int _textBoxId = 1000;
private LinearLayout _layout = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_layout = (LinearLayout) findViewById(R.id.linearLayoutSPTextHolder);
// _layout.setOrientation(LinearLayout.VERTICAL);
Button addPl = (Button) findViewById(R.id.buttonSPAddText);
addPl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CreateUserTextBox();
}
});
}
private void CreateUserTextBox() {
LayoutParams lpView = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
EditText textbox = new EditText(this);
textbox.setId(_textBoxId);
textbox.setText(_textBoxId + "");
textbox.setLayoutParams(lpView);
_textBoxId++;
_layout.addView(textbox);
}
}