我还在学习Android,所以我知道这个问题听起来很傻。 在这里,我需要在我的Activity上设置大量TextView的位置。我使用来自intent的变量接收数字,但是稍后当我需要创建与数字一样多的TextView时,它们出现在我的布局上的位置(0,0)。 我需要创建一个格栅,例如:__ __ __ __ 但是,所有这些都出现在同一个地方(0,0),我的应用程序只显示:__
这是我尝试过的代码:
public class Play extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_play);
Intent intent=getIntent();
String n = intent.getStringExtra("NUM");
int times = Integer.parseInt(n);
TextView [] espaces = new TextView[times];
for(int i = 0; i < espaces.length; i++){
espaces[i] = new TextView(this);
espaces[i].setText(" __ ");
//Here I would like to set the position of my text view
setContentView(espaces[i]);
}
}
}
答案 0 :(得分:1)
您似乎不了解setContentView()
的作用。它会将传入的视图替换为现有的内容视图。因此,您不会添加视图,而是始终显示您设置的最后一个视图。如果您想要全部展示,请将其添加到LinearLayout
并将该视图设为setContentView()
。
答案 1 :(得分:1)
如果我读到的是正确的,我认为您使用相对布局需要更改为LinearLayout。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
</LinearLayout>
此外,您正在以错误的方式添加视图,您需要一个引用线性布局的变量。
//you create a field outside the onCreate Method
LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_play);
//then initialize the variable like this.
layout = (LinearLayout) findViewById(R.id.linear_layout);
Intent intent=getIntent();
String n = intent.getStringExtra("NUM");
int times = Integer.parseInt(n);
TextView [] espaces = new TextView[times];
for(int i = 0; i < espaces.length; i++){
espaces[i] = new TextView(this);
espaces[i].setText(" __ ");
//you add like this
layout.addView(espaces[i]);
}
}
答案 2 :(得分:0)
我不知道布局xml act_play
的内容。但我希望LinearLayout
标识为container
。
所以将代码更改为下一个:
public class Play extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_play);
ViewGroup content = (ViewGroup)findViewById(R.id.container); //<-this id from xml
Intent intent=getIntent();
String n = intent.getStringExtra("NUM");
int times = Integer.parseInt(n);
TextView [] espaces = new TextView[times];
for(int i = 0; i < espaces.length; i++){
espaces[i] = new TextView(this);
espaces[i].setText(" __ ");
content.addView(espaces[i]);//<-add to view group and not replace content view of activity
}
}
}
顺便说一下,你可以把整数放到意图中,所以当你收回它时不需要转换。