Android 将动态文本添加到RelativeLayout
我想为我的Android游戏创建一个“输入你的名字”页面(高分),但我遇到了一些问题。 我希望它看起来像这样: 你已经到达了 这是分数 积分!(=第2节) 请输入您的姓名以保存您的分数!(=第3节) ……编辑名称的文本 后退(=按钮)。。。。。。。。。。。。。。。。。。。输入(=按钮) 但我似乎无法将分数(int)添加到ContentView中 代码如下: “onCreate”中的Java: XML:Android 将动态文本添加到RelativeLayout,android,text,textview,add,android-relativelayout,Android,Text,Textview,Add,Android Relativelayout,我想为我的Android游戏创建一个“输入你的名字”页面(高分),但我遇到了一些问题。 我希望它看起来像这样: 你已经到达了 这是分数 积分!(=第2节) 请输入您的姓名以保存您的分数!(=第3节) ……编辑名称的文本 后退(=按钮)。。。。。。。。。。。。。。。。。。。输入(=按钮) 但我似乎无法将分数(int)添加到ContentView中 代码如下: “onCreate”中的Java: XML: 那么,如何将分数添加到布局中?您不能对textA、textB等调用addView,因为它们
那么,如何将分数添加到布局中?您不能对textA、textB等调用addView,因为它们已经存在于XML文件中,并且已经是视图的子视图。相反,您应该在XML文件中创建一个空的RelativeLayout,然后使用new TextView()创建textA等,并将其添加到布局中。如果视图已经是该布局的子视图,则不应该将其添加到布局中。调用setcontentview时,XML布局会膨胀,所有这些视图都会创建并添加到视图层次结构中 我会将MySco文本视图添加到布局XML中,然后调用findviewbyd来获取它。我会避免动态添加视图。始终可以创建一个隐藏的视图,然后稍后再显示以获得类似效果 下面是您的onCreate方法的修改/精简代码
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_hs);
MySco = (TextView)findViewById(R.id.score);
Intent intentk = getIntent();
kontro = intentk.getStringExtra("from").equals("MainActivity") ;
score = 0 ;
if(kontro == false){
score = punkteRechnen(tuleb, le0leb, le1leb, le2leb) ; //calculate the score
} else {
score = 10 ;
}
scoint = "" + score ;
MySco.setText(scoint) ;
MySco.setTextColor(Color.WHITE) ;
MySco.setTextSize(20);
在布局中添加以下内容:
<TextView
android:id="@+id/score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:textSize="20sp" />
试试这个,它可能会对你有所帮助 在相对版面中添加文本视图以在版面上添加分数
MySco.setLayoutParams(new RelativeLayout.LayoutParams(300,300);
layo.addView(MySco);
我知道,因为这个例外,我不能这么做。但是什么时候我必须设置ContentView?如果我将其保留在原来的位置,然后再添加内容,新视图将不会显示,是吗?我想,我必须将Layou设置为ContentView,否则它将不会显示,但如果我这样做,其他textview、edittext和按钮将不存在。首先在layout.xml文件中定义linearlayout,然后在该linearlayout中设置textview。要在linearlayout中添加textview,您可以使用我上面的代码。在RelativeLayout中是否有其他linearlayout?不幸的是,我仍然必须将layo设置为ContentView,并且必须在“Enter.setOnClickListener(this);”之前执行此操作,否则它将无法工作(已经尝试将“setContentView(layo);”复制到最后,但它只会输出一些错误)。我的问题是,在调用punkteRechnen()之前,我不知道确切的分数,因此,我无法将其添加到布局xml中,并事先将值放入Strings.xml中。我很想使用布局xml,但我不知道是否有可能在应用程序运行时向Strings.xml添加值。这很好。调用punkteRechnen后,在文本视图上调用setText,就像您所做的那样。上面代码中的问题是尚未将分数文本视图添加到布局中。让layout.xml和setContentView完成所有这些困难的工作。创建文本视图后,只需更新文本。您需要删除分配内容“=new xxx”的两个调用,并用findviewbyd替换它们。然后简单地更新findViewById返回的视图中的文本。谢谢,谢谢,非常感谢,这正是我想要做的(但不幸的是,我不知道如何做),它工作得非常完美!
<TextView
android:id="@+id/score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:textSize="20sp" />
MySco.setLayoutParams(new RelativeLayout.LayoutParams(300,300);
layo.addView(MySco);