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

时间:2014-10-16 20:22:57

标签: c# android android-layout xamarin

我想在屏幕上有两个布局。一个可滚动,另一个应该包含一个按钮,可以添加可滚动布局的东西,并始终应该是可见的。我不确定我是否朝着正确的方向前进,但到目前为止,我已经拥有了这个并且我的代码以我没想到的方式工作。如果我单击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);

    }
}

1 个答案:

答案 0 :(得分:1)

这段代码非常适合我:

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

    }
}