我用按钮创建了活动。我需要指定按钮的高度和宽度,如下所示。
Button btn=new Button(this);
btn.setWidth(100);
btn.setHeight(100);
对于多屏幕支持,它是指定视图大小的正确方法。指导我设置视图的高度和宽度。
答案 0 :(得分:2)
这实际上取决于您想要如何确定按钮大小。基本上你有两个选择
FILL_PARENT
或WRAP_CONTENT
如果您选择第二种方式,您还必须选择策略,例如
前者是微不足道的:只需获取目标元素的宽度(如果它是整个显示,则通过DisplayMetrics
;如果是getWidth()
则通过View
并将其乘以你的系数。
后者要求您知道显示器的密度,即设备上的像素有多大。例如,通过加倍密度,像素宽度将减半
DENSITY PIXEL SIZE
100 dpi 1/100 in
200 dpi 1/200 in
因此,如果您希望所有设备上的按钮宽度为1英寸,则可以使用
button.setWidth(1 * (int) metrics.xdpi); //1 inch * DisplayMetrics.xdpi
如果您知道MDPI设备上的像素大小,即一个DIP是大约160 dpi屏幕上的一个像素的设备,则会有一些变体。在这种情况下,您可以使用以下
button.setWidth(100 * metrics.density);
这是DisplayMetrics.density
的javadoc:
显示器的逻辑密度。这是一个缩放因子 密度独立像素单位,其中一个DIP是一个像素 大约160 dpi的屏幕(例如240x320,1.5“x2”屏幕), 提供系统显示的基线。因此在160dpi 屏幕此密度值将为1;在120 dpi的屏幕上它会是 0.75;此值并不完全符合实际屏幕尺寸(如 由xdpi和ydpi给出,而是用于缩放的大小 基于显示dpi中的总体变化的整体UI步骤。对于 例如,即使宽度为240x320,屏幕的密度也为1 是1.8“,1.3”等。但是,如果屏幕分辨率增加到 320x480,但屏幕尺寸保持1.5“x2”,然后密度将是 增加(可能增加到1.5)。
答案 1 :(得分:0)
@Karthick如果您的按钮未在Android布局的xml中使用,那么您可以在下面设置按钮宽度和高度。
使用下面的代码来了解设备的高度和宽度。
int public static int LDPI_BUTTONSIZE=100;
int device_height;
int device_width;
WindowManager wm=getWindowManager();;
DisplayMetrics dm=new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
device_width=dm.widthPixels;
device_height=dm.heightPixels;
从上面的代码中,您将决定Android设备的哪个屏幕,例如,您可以参考开发人员click here的此链接。参考表3中。
现在,如果您的设备是LDPI,那么您可以像这样设置Button值。
Button btn=new Button(this);
btn.setWidth(LDPI_BUTTONSIZE);
btn.setHeight(LDPI_BUTTONSIZE);
答案 2 :(得分:0)
为此,您需要将像素转换为dp。您可以使用TypedValue
。
示例:
int buttonWidthInPixels = 100;
float buttonWIdthInDp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
buttonWidthInPixels, getResources().getDisplayMetrics());
button.setWidth((int) buttonWidthInDp);
如果您想转换为SP(文字),请使用TypedValue.COMPLEX_UNIT_SP
作为applyDimension()
的第一个参数。请参阅this page on the Android dev guide。