将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);
    }
}

将EditText从非子布局动态添加到另一个LinearLayout

这段代码对我来说效果很好:

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);
    }
}