2014-10-16 71 views
1

我想在屏幕上有两个布局。一个可滚动的,另一个应该包含一个按钮,可以添加可滚动布局的东西,并始终应该可见。我不确定我是否正朝着正确的方向前进,但到目前为止,我已经拥有了这个功能,而且我的代码工作方式并不令人期待。如果单击buttonSPAddText EditText与按钮出现在同一行中。我希望它在另一个版式linearLayoutSPTextHolder之下出现在它们下面。动态添加EditText到非儿童布局的另一个LinearLayout

这是我的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

此代码为我工作得非常好:

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

    } 
} 
+0

它的工作。 Thanx – valentasm 2014-10-18 09:23:47

+0

欢迎您....你能接受吗? – MohamedZaatari 2014-10-19 13:06:45

+0

我是新来的。花了一些时间才知道如何接受它:D。当然在源代码分析之后。 – valentasm 2014-10-19 13:24:09