可能我的问题的标题并不是很清楚。 我正在为大学项目开发我的第一个Android应用程序。我现在需要的是给我的用户输入一个“成分”的可能性,以便在数据库中查找配方。这很简单。
我可能读过这个网站上所有类似的帖子,但我无法解决我的问题:现在我想给用户指定多个成分的可能性,以便我的第一个下面应该有一个“+”按钮EditText字段允许在第一个和按钮本身之间添加新的EditText字段。 与EditText字段一起,我需要一个“ - ”按钮,当单击时,“隐藏”相对输入字段。
我希望描述清楚。
我现在拥有的是我的主要XML布局,第二个是使用edittext和“ - ”按钮......但我不明白如何在主要布局中推送/展示/显示此布局... < / p> 你能帮帮我吗? 这是我想推的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_below="@+id/ingredient"
android:layout_height ="wrap_content"
android:layout_width="fill_parent"
android:visibility="gone"
android:id="@+id/newLine1">
<EditText
android:id="@+id/ingredient"
android:layout_width="100dp"
android:layout_height="50dp"
android:inputType="text"
android:hint="@string/hint_ingredient" />
<Button
android:id="@+id/remove"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="@string/remove"
android:layout_toRightOf="@+id/ingredient"
android:onClick="removeLine"
/>
</RelativeLayout>
这是主要布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/main_linear">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:scrollbars="horizontal"
android:id="@+id/scrollView"
android:layout_weight="1.0" android:fadingEdge="none">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="300dp" android:layout_height="wrap_content" android:id="@+id/ingredients">
<EditText
android:id="@+id/ingredient"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:hint="@string/hint_ingredient" />
</RelativeLayout>
</ScrollView>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height ="wrap_content"
android:layout_width="match_parent"
android:id="@+id/buttons">
<Button
android:id="@+id/add"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/add"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/add"
android:text="@string/search"
/>
</RelativeLayout>
</LinearLayout>
如何删除充气机添加的新线?
现在我解决了这样的问题:
public void removeLine(View v)
{
View line = (View) v.getParent();
line.setVisibility(View.GONE);
}
还有其他方法吗?
答案 0 :(得分:0)
在“+”按钮的onClickListener中,您需要使用LayoutInflater将您的配料布局扩展为视图。然后使用findViewById()获取对您的成分RelativeLayout的引用,并将新视图添加到其中。
确保为膨胀的新视图指定LayoutParams。
您可能希望将成分更改为LinearLayout。添加视图比RelativeLayout更容易,因为您只需将视图添加到LinearLayout而不必担心它们的相对位置。
祝你好运。答案 1 :(得分:0)
在onClickListener中的“+”按钮上写下这样的内容:
int et_counter=1;
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
EditText et = new EditText(RecipeActivity.this);
//assign them an ID with an int counter
//use this counter later to refer to the EditText
//to retrieve the values
et.setId(et_counter);
ll.addView(et);
你可以检索这样的值:
for (n = 1; n <= et_counter; n++){
et = (EditText) findViewById(n);
String ingridient=et.getText().toString();
//use the text somewhere
}
同样,您可以将onClick侦听器分配给“ - ”按钮,使用et_counter引用带有ID的EditText并使用et.setVisibility(View.GONE);
您应该可以将此与逻辑一起使用。祝你好运: - )