在屏幕属性上设置视图

Posted

技术标签:

【中文标题】在屏幕属性上设置视图【英文标题】:Set a view on screen-properities 【发布时间】:2015-03-09 13:06:06 【问题描述】:

在下面的代码中,按钮在点击时改变它的位置。但有时,按钮会移出屏幕,导致无法再点击。如何解决?

@Override

public void onClick(View v) 

view.getParent();
    Random r = new Random();
    View decorView = getWindow().getDecorView();
    int screenWidth = decorView.getWidth();
    int screenHeight = decorView.getHeight();
      long startTime =  SystemClock.elapsedRealtime();
      i++;


    if (i == 1 ) 

        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    
    if (i == 2 ) 
        start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
        start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
    

    else if (i == 3) 
        long difference = SystemClock.elapsedRealtime()  - startTime;

          Intent intent = new Intent(Game.this, MainScreen.class);
          intent.putExtra("time",difference);

          textview1.setText(getIntent().getStringExtra("time"));
        finish();
    



【问题讨论】:

activity的布局是什么,可能按钮的父级不是整个屏幕,你使用decorView获取父级的宽度和高度!您应该从按钮的父视图中获取此值。 布局是相对布局。如何从父母那里获得价值? 使用 view.getParent() 获取父视图,然后从父视图中获取您需要的布局参数 更新代码:无法解析视图? 【参考方案1】:

似乎您遇到的问题是您可能在您的RelativeLayout 中使用wrap_content 作为宽度/高度,但您获取的是屏幕的宽度和高度,而不是包含按钮的布局。

您应该使用getParent() 方法来获取您的RelativeLayout 宽度和高度。

RelativeLayout myRelativeLayout = (RelativeLayout) myButton.getParent();
int screenWidth = myRelativeLayout.getWidth();
int screenHeight = myRelativeLayout.getHeight();

【讨论】:

以上是关于在屏幕属性上设置视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在屏幕上的特定位置设置视图?

如何在图像视图中将图像设置为适合屏幕

如何在屏幕上的特定位置设置视图?

视图不在屏幕时的 UIView 动画 alpha 不起作用

iOS:在 iPhone 8 和 iPhone 8 plus 屏幕上设置视图

如何在导航栏上为单个视图上的不同按钮设置标题?