我有一个Spinner,EditText和一个Button。当我在EditText中输入内容然后单击一个Button时,我希望它根据旋转器上的哪个项目创建一个新的TextView。
按钮点击方法:
public void submitScore(View v){
final int position = playerList.getSelectedItemPosition();
EditText input = (EditText) findViewById(R.id.editText1);
createNewTextView (players.get(position) + input);
}
createNewTextView():
private TextView createNewTextView (String text){
final LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final TextView newTextView = new TextView(this);
newTextView.setLayoutParams(lparams);
newTextView.setText(text);
return newTextView;
}
整个XML代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Igra" >
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/editText1"
android:orientation="vertical" >
</LinearLayout>
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/spinner1"
android:layout_toLeftOf="@+id/button1"
android:layout_toRightOf="@+id/textView1"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentRight="true"
android:text="Enter"
android:onClick="submitScore" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentLeft="true"
android:text="Score:" />
正如你所看到的;我在此活动中有相对和线性布局,它们是分开的(LinearLayout在RelativeLayout下)。
我希望将这个TextView添加到LinearLayout中,但它不会添加到任何地方,当我按下按钮时我看不到它。
我的代码现在:
public void submitScore(View v){
LinearLayout lLayout = (LinearLayout) findViewById (R.id.linearLayout);
final int position = playerList.getSelectedItemPosition();
EditText input = (EditText) findViewById(R.id.editText1);
final LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final TextView newTextView = new TextView(this);
newTextView.setLayoutParams(lparams);
newTextView.setText(players.get(position) + input);
//createNewTextView (players.get(position) + input);
lLayout.addView(newTextView);
}
结果:
答案 0 :(得分:1)
在submitScore()
,您正在创建TextView
,但未将其添加到LinearLayout
。
为LinearLayout
提供android:id
值,然后在submitScore()
上获取其引用,并调用add()
的{{1}}方法添加返回的值来自LinearLayout
答案 1 :(得分:0)
为什么不从xml创建textview并使其不可见
textView.setVisibility(View.INVISIBLE);
然后当你选择某些东西时,它会变成可见的文字..
private TextView createNewTextView (String text){
textView.setVisibility(View.VISIBLE);
textview.setText(text);
}
答案 2 :(得分:0)
您没有看到任何已创建的textView,因为您没有将任何textView添加到布局中。 (据我所知,哟给出了)
为你的linearLayout提供一个id,在你的submitScore()方法中按id获取你的布局,然后将你的editText添加到你通过createNewTextView()方法创建的布局中。
<LinearLayout
android:id="@+id/myTextViewContainer"
...
>
</LinearLayout>
public void submitScore(View v){
....
TextView newTextView = createNewTextView (players.get(position) + input);
LinearLayout myTextViewContainer=(LinearLayout)findViewById(R.id.myTextViewContainer);
myTextViewContainer.addView(newTextView);
}