Android oncreate函数中布局的宽度为0
在oncreate函数中布局的宽度,我需要这个尺寸,但您的valor为0。下面是我的一些代码:Android oncreate函数中布局的宽度为0,android,width,oncreate,Android,Width,Oncreate,在oncreate函数中布局的宽度,我需要这个尺寸,但您的valor为0。下面是我的一些代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout layout_principal=(LinearLayout)findViewById(R.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout_principal=(LinearLayout)findViewById(R.id.pru);
int mywidth=layout_principal.getWidth();
LinearLayout.LayoutParams txt_sep_principal_Params=new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
mywidth/2);
TextView txt_sep_principal=new TextView(this);
txt_sep_principal.setLayoutParams(txt_sep_principal_Params);
txt_sep_principal.setText("text of my code");
TextView txt_sep_principal2=new TextView(this);
txt_sep_principal2.setLayoutParams(txt_sep_principal_Params);
txt_sep_principal2.setText("Text of my code");
layout_principal.addView(txt_sep_principal);
layout_principal.addView(txt_sep_principal2);
}
在这条线之后
LinearLayout layout_principal=(LinearLayout)findViewById(R.id.pru);
尝试添加这些代码行
layout_principal.setOrientation(LinearLayout.VERTICAL);
layout_principal.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
布局
可能尚未完全完成绘图。尝试在其上发布一个runnable
。差不多
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout layout_principal=(LinearLayout)findViewById(R.id.pru);
layout_principal.post(new Runnable()
{
public void run()
{
int mywidth=layout_principal.getWidth();
LinearLayout.LayoutParams txt_sep_principal_Params=new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
mywidth/2);
TextView txt_sep_principal=new TextView(this);
...
}
});
编辑
public class YourActivty extends Activity
{
// These are declarations
TextView tv;
Button btn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// these are initializations
tv = (TextView) findViewById(R.id.someId);
btn = (Button) findViewById(R.id.someOtherId);
请参阅我的代码中的注释以这种方式声明它们,使它们可用于整个
活动。在调用setContentView()
之前不能初始化它们,当然也不能在方法之外。显然,您需要将我使用的示例视图
替换为您自己的视图。在oncreate方法中获取版面大小还为时过早
请尝试以下代码:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
//Here you can get the size!
Toast.makeText(this,""+ Layout.getHeight(), Toast.LENGTH_LONG).show();
}
请在此处查看完整代码:
LinearLayout layout_principal;
int mywidth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout_principal =(LinearLayout)findViewById(R.id.pru);
LinearLayout.LayoutParams txt_sep_principal_Params=new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
mywidth/2);
TextView txt_sep_principal=new TextView(this);
txt_sep_principal.setLayoutParams(txt_sep_principal_Params);
txt_sep_principal.setText("text of my code");
TextView txt_sep_principal2=new TextView(this);
txt_sep_principal2.setLayoutParams(txt_sep_principal_Params);
txt_sep_principal2.setText("Text of my code");
layout_principal.addView(txt_sep_principal);
layout_principal.addView(txt_sep_principal2);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
//Here you can get the size!
mywidth=layout_principal.getWidth();
}
请写出函数的完整标题。你在说什么?我想匿名声明混淆了他的这一行“layout\u principal.post(new Runnable()”,这就完成了?如果你在itits override方法下面包含了这些行,就把它作为你的类放在onCreate方法之后,我放在“layout\u principal LinearLayout=(LinearLayout)findViewById(R.id.pru)“?在onWindowFocusChanged()中无法识别我您将把它作为代码中的字段,查看edit answer AlsoSurry,应用程序运行,但宽度无法识别我,我得到0。