我正在尝试在应用运行时添加EditText小部件,我不知道该怎么做。我希望有可能。 我想要做的是用户将从微调器列表中选择一个项目,然后将出现编辑文本。 例如,微调器包含人类外观的属性,用户可以决定是否要添加“头发形状”或“眼睛颜色”EditText字段或旋转器中的内容。
我做了下面的代码,但是当我尝试时,当我从微调器中选择项目时没有任何反应。
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
switch(arg1.getId())
{
case R.id.parametersChoose:
LinearLayout test = (LinearLayout) findViewById(R.id.test);
EditText field = new EditText(this);
LayoutParams b = new LayoutParams(50, 30);
field.setLayoutParams(b);
field.setText("enter" + parametersChoose.getSelectedItem().toString());
switch(parametersChoose.getSelectedItemPosition())
{
case 1:
field.setId(1);
}
test.addView(field);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/addWorkOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="save" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set new Exercise type" />
<EditText
android:id="@+id/newExercise"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
</EditText>
<Spinner
android:id="@+id/workOutChoose"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/parametersChoose"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ScrollView
android:id="@+id/scroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10" >
</EditText>
</LinearLayout>
</ScrollView>
></LinearLayout>
答案 0 :(得分:0)
为什么在运行之前你还没有创建一个edittext小部件,但是在运行它之前让它不可见,直到你希望它再次可见为止。只需将属性设置为可见就可以看到它!
答案 1 :(得分:0)
更改此
ScrollView test = (ScrollView) findViewById(R.id.scroll);
到
LinearLayout test = (LinearLayout) findViewById(R.id.test);
ScrollView是一个FrameLayout,意味着您应该在其中放置一个包含要滚动的全部内容的子项;这个子本身可能是一个具有复杂对象层次结构的布局管理器。
您正在为ScrollView
多个直接孩子提供xml中的LinearLayout
以及您以编程方式创建的EditText
。将新的EditText
添加到LinearLayout
ScrollView
答案 2 :(得分:0)
我发现了我的问题。
当使用2个或更多个微调器并试图通过switch
调用它们时,参数View arg1
并不指向微调器他自己,而是指向行。
为了调用微调器自己需要调用父窗口小部件。值是来自AdapterView<?> arg0
。
代码需要如下所示:
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
switch(arg0.getId())
{
....
....
....