2016-12-01 89 views
2

请耐心等待,因为我对视图和布局的使用很陌生。以编程方式将视图添加到滚动视图中的相对布局

我正在尝试创建一个应用程序,用户可以在其中输入文本字段,按一个按钮并显示一个新的文本字段,然后他们可以继续以这种方式添加文本字段。

我的解决办法是让顶层是一个滚动视图,然后有作为之内,一个孩子一个相对的观点,(这样我就可以编程用的OnClick()侦听器插入我的代码更editviews。

我看到过,看过一些有关意见相对其他职位,但它似乎还有东西,我很想念。我已经试过

这里是XML

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_create_accounts" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.nic.mybudget.CreateAccountsActivity"> 


<RelativeLayout 
    android:id="@+id/activity_create_accounts_relativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="true" 
    > 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/activity_name" 
     android:inputType="textAutoComplete" 
     android:layout_alignParentTop="true" 
     android:id="@+id/activity_createAccounts_relativeLayout_activityName"/> 


    <Button 
     android:text="+" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_below="@+id/activity_createAccounts_relativeLayout_activityName" 
     android:id="@+id/activity_create_accounts_relativeLayout_activityName_addButton" /> 

    <Button 
     android:text="Save" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_below="@+id/activity_create_accounts_relativeLayout_activityName_addButton" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/activity_create_accounts_relativeLayout_activityName_saveButton" /> 


</RelativeLayout> 

这里是我尝试添加新编辑视图的代码。

public class CreateAccountsActivity extends Activity { 

static private final String TAG = "MAIN-Activity"; 
int numAccounts = 0; 
int lastAccountID; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_create_accounts); 

    final RelativeLayout Relative = (RelativeLayout) findViewById(R.id.activity_create_accounts_relativeLayout); 
    final TextView oldAccount = (TextView) findViewById(R.id.activity_createAccounts_relativeLayout_activityName); 
    final TextView newAccount = new TextView(this); 

    final Button addNewAccountButton = (Button) findViewById(R.id.activity_create_accounts_relativeLayout_activityName_addButton); 
    addNewAccountButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.i(TAG, "addNewAccountOnClick"); 
      numAccounts = numAccounts+1; 
      int newAccountID = oldAccount.getId() + numAccounts; 

      RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
      rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
      newAccount.setLayoutParams(rlp); 
      newAccount.setHint("Hint"); 
      newAccount.setId(newAccountID); 
      Relative.addView(newAccount); 

      RelativeLayout.LayoutParams blp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
      blp.addRule(RelativeLayout.BELOW, newAccountID-1); 
      addNewAccountButton.setLayoutParams(blp); 
     } 
    }); 
} 

} 

正如你可以看到我想要什么(不及格)做的是在页面的顶部添加新的编辑视图,只需按下一切下跌的一页。我在这里看到的相对布局是什么?

任何帮助表示赞赏。

+1

您可以使用listview代替scollview中的相对布局,并在列表中添加元素并将其设置为notifyDataSetChanged()。或者使用LinearLayout而不是Relative Layout。 –

回答

3

第一件事查看ID activity_createAccounts_relativeLayout_activityNameEditText并且您正在使用TextView强制将它投射到EditText

和你实际的问题: 您正在使用相同EditText例如可变newAccount和相对布局重新加入,如果你想加入,你必须初始化的EditText内onclicklistener相对布局多一个的EditText。 只需在行之前添加一行newAccount= new EditText(context) onklicklistener代码numAccounts = numAccounts+1;

快乐编码!

相关问题