首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用setX和setY

何时使用setX和setY
EN

Stack Overflow用户
提问于 2015-08-11 21:12:18
回答 3查看 1.6K关注 0票数 1

我使用setX和setY来移动屏幕上的视图。然而,我读到android首先需要计算视图的位置,否则它会给NullPointerException (发生了什么)。为了避免出现异常,我需要知道何时使用。直到现在,我在onCreate()中使用了它。谢谢,祝你今天愉快

EN

回答 3

Stack Overflow用户

发布于 2015-08-11 21:26:14

绝对不能在onResume()之前或期间使用它。您将需要设置一个全局布局监听器,并且每当视图被放置时,您都会移动该视图。但是,这并不是一个好主意,如果您希望在用户第一次看到应用程序时将视图设置在某个位置,那么最好通过xml进行设置。

如果您希望在应用程序运行时视图移动,请查看Android动画类。

代码语言:javascript
复制
public class YourClass extends Activity implements ViewTreeObserver.OnGlobalLayoutListener {
View myView;
     @Override    
     onGlobalLayout() {
          myView.setx(100);
          myView.sety(100);

     }

     @Override
     onCreate(Bundle bundle) {
          super.onCreate(bundle);
          setContentView(layout);

          myView = findViewById(R.id.myView);
          myView.getViewTreeObserver().addOnGlobalLayoutListener(this);
     }
}
票数 1
EN

Stack Overflow用户

发布于 2015-08-11 21:15:25

在布局xml中应用转换时有任何问题:

代码语言:javascript
复制
<View
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:translationX="10dp"
    android:translationY="10dp" />

Post更新,应该在下一个UI框架上运行:

代码语言:javascript
复制
myView.post(new Runnable() {
    @Override
    public void run() {
        myView.setX(50);
        myView.setY(50);
    }
});
票数 0
EN

Stack Overflow用户

发布于 2018-11-02 00:00:22

您可以在onCreate方法的末尾使用一个对话框,在该对话框中,您可以询问用户是否想继续。这将执行下面的代码,并允许您在任何需要的地方设置视图(此处:按钮)。试着检查如何使用对话框,如果这个解决方案可以应用到您的应用程序。对我起作用了。

代码语言:javascript
复制
myDialog=new Dialog(this);
myDialog.setContentView(R.layout.my_dialog);
button_on_dialog=myDialog.findViewById(R.id.button_on_dialog);
button_on_dialog.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        button.setX(100f);
        myDialog.dismiss();
    }
});

myDialog.show();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31952032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档