我有问题,如果我尝试用LinearLayout.getWidth()和得到我的高度和宽度,LinearLayout.getHeight()我得到的int是0.
这是我的onCreat:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
View mainView = getLayoutInflater().inflate(R.layout.activity_game, null);
LinearLayout container = (LinearLayout) mainView.findViewById(R.id.container);
view = new GameLayout(this, container.getWidth(), container.getHeight());
container.addView(view);
setContentView(mainView);
view.setOnClickListener(this);
}
Run Code Online (Sandbox Code Playgroud)
如果您有任何想法,我做错了什么,请帮忙.
我需要这个来获取布局的大小,因为我想要将我的位图放在每个设备上相同的百分比位置(例如每次都在屏幕的正中心).
编辑:
解:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
View mainView = getLayoutInflater().inflate(R.layout.activity_game, null);
final LinearLayout container = (LinearLayout) mainView.findViewById(R.id.container);
mainView.post(new Runnable()
{
@Override
public void run()
{
view = new GameLayout(GameActivity.this, container.getWidth(), container.getHeight());
container.addView(view);
view.setOnClickListener(GameActivity.this);
}
} );
setContentView(mainView);
}
Run Code Online (Sandbox Code Playgroud)
它返回零,因为尚未计算布局的大小.要克服这种情况,您可以通过以下方式在主视图队列中发布Runnable:
mainView.post(new Runnable() {
@Override
public void run() {
view = new GameLayout(this, container.getWidth(), container.getHeight());
} );
Run Code Online (Sandbox Code Playgroud)
runnable将作为mainview的队列的最后一个元素执行.那时,应该已经计算出容器的大小.
编辑.容器必须标记为final才能在内部runnable中访问
| 归档时间: |
|
| 查看次数: |
4820 次 |
| 最近记录: |