【问题标题】:Couldn't reposition views programatically in an Activity android无法在 Activity android 中以编程方式重新定位视图
【发布时间】:2015-09-11 12:05:46
【问题描述】:

我在一个具有相对布局的 Activity 中有 5 个按钮。我有一个名为 init() 将使用 setX()setY() 重新定位按钮。当我从 onClickListener 内部调用 init() 时,按钮会重新排列,没有任何问题。但是当我从 onCreate()onStart() 调用该函数时,日志显示该函数已执行,但按钮保持在同一位置。我该怎么办?

另外,如果我从 onResume() 调用 init(),按钮的重新定位不会出现问题。

public class MainActivity extends ActionBarActivity {
@Override
protected void onStart()
{
    super.onStart();
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //if init() is called here I can see the Log "Tag/Init Executed" but the buttons are not repositioned
}
@Override
protected void onResume()
{
    Log.i("Log", "resume called");
    super.onResume();
    //if i call init() here, the button is not repositioned but if i click home button and resume the app again, the button is repositioned.
}
public void init()
{
    Log.i("Tag","Init Executed");
    b1=(ImageButton)findViewById(R.id.imageButton);
    b1.setX(p.x);
    b1.setY(p.y);
}
}

【问题讨论】:

  • 提供一些代码....我认为您在视图层次结构完全膨胀之前就这样做了
  • 我第二,但在 onStart() 中,视图层次结构应该已经膨胀,一点代码会有所帮助

标签: android android-activity dynamic android-view


【解决方案1】:

onCreate():

在首次创建活动时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含活动先前冻结状态的 Bundle(如果有的话)。始终跟在 onStart() 之后。

onRestart():

在您的活动停止后、再次开始之前调用。总是跟着 onStart()

onStart():

当活动对用户可见时调用。如果活动进入前台,则为 onResume(),如果它被隐藏,则为 onStop()。

Android activity life cycle - what are all these methods for?

【讨论】:

    【解决方案2】:

    好的,我很久以前解决了这个问题。刚刚有时间更新一下。使用后它对我有用。

    View myView=view.findViewById(R.id.parent);
    myView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
             init();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多