Почему я могу обновить файл, принадлежащий root, используя sudo vi, но не добавлять к нему строку с помощью sudo echo "Thing" >> файла?

我创建了一些自定义元素,我想以编程方式将它们放置在右上角(距顶部边缘n像素,距右侧边缘m像素)。因此我需要得到屏幕宽度和屏幕高度,然后设置位置。

int px = screenWidth - m;
int py = screenHeight - n;

我如何在主活动中获得screenWidthscreenHeight

解决办法

如果你想要以像素为单位的显示尺寸,你可以使用getSize

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如果你不在一个 "活动 "中,你可以通过 "WINDOW_SERVICE "获得默认的 "显示"。

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

如果你在一个片段中,想要完成这个任务,只需使用Activity.WindowManager(在Xamarin.Android中)或getActivity().getWindowManager()(在java中)。

在 "getSize "被引入之前(在API级别13),你可以使用 "getWidth "和 "getHeight "方法,这些方法现在已经废弃了。

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

然而,对于你所描述的用例,布局中的空白/填充似乎更合适。

另一种方法是。DisplayMetrics

一个描述关于显示器的一般信息的结构,比如它的尺寸、密度和字体缩放。要访问DisplayMetrics成员,请像这样初始化一个对象。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

我们可以使用widthPixels来获取以下信息。

"显示器的绝对宽度,单位是像素。"

例子:

Log.d("ApplicationTagName", "Display width in px is " + metrics.widthPixels);
评论(25)

一种方法是。

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

它已被废弃,你应该尝试用下面的代码代替。前两行代码给了你 "DisplayMetrics "对象。这个对象包含 "高度像素"、"宽度像素 "等字段。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int height = metrics.heightPixels;
int width = metrics.widthPixels;
评论(10)

首先获得视图(例如,通过findViewById()),然后你可以对视图本身使用getWidth()

评论(2)