这是我的代码:
LinearLayout ll = (LinearLayout) View.inflate(TabAndPlay.this, R.layout.current_play, null);
TextView tv = new TextView(TabAndPlay.this);
tv.setText("hallo");
tv.setBackgroundColor(Color.GRAY);
ll.addView(tv);
current_play.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/aktuelle_spiele"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
R.id.llPlay(有xml显示)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip">
<LinearLayout
android:id="@+id/llPlay"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
</LinearLayout>
这是onOptionsItemSelected()
case R.id.current_play:
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.llPlay);
mainLayout.removeAllViews();
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.current_play, mainLayout, true);
return true;
如果我点击我的菜单项,我在R.id.llPlays上的所有当前视图都将被删除! 显示来自current_play的按钮。但是来自“Here here”的TextView不显示.. 为什么?我的错误是什么?
答案 0 :(得分:0)
你的问题含糊不清,所以我猜一个答案:
在onOptionsItemSelected()
中,您搜索标识为LinearLayout
的{{1}},并使用R.id.llPlay
删除其中的所有子视图,然后对removeAllViews()
进行充气并将您的布局设置为R.layout.current_play
(LinearLayout
)与aktuelle_spiele
以及Button
(您为其设置文本“Hallo”)。问题是,当您为布局充气时,您只会在此时为该布局上的视图充气。如果您希望您的布局也包含您在代码中构建的TextView
,那么您有两个选项:
1直接在TextView
布局中添加TextView
,并为其添加ID,以便稍后检索current_play.xml
(TextView
}并设置文本“你好”:
findViewById(R.id.the_text)
修改强>
2然后在您想要的地方动态构建布局,但保留对该膨胀视图的引用。因此,如果您创建这样的视图:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/aktuelle_spiele"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView
android:id="@+id/the_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
然后保留对该膨胀视图 LinearLayout ll = (LinearLayout) View.inflate(TabAndPlay.this, R.layout.current_play, null);
TextView tv = new TextView(TabAndPlay.this);
tv.setText("hallo");
tv.setBackgroundColor(Color.GRAY);
ll.addView(tv);
的引用,并将其传递给ll
回调到主要布局:
onOptionsItemSelected()
答案 1 :(得分:0)
您忘记了该textview的布局参数。
LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(wrap_content,wrap_content);
然后添加
ll.addView(tv);