如何制作方形的RelativeLayout

时间:2013-07-26 17:02:52

标签: android

我想将棋盘图像绘制到RelativeLayout的背景中。

我正在以纵向模式(垂直)测试它。

这是我的一段代码:

device_xdpi = getResources().getDisplayMetrics().xdpi;
device_ydpi = getResources().getDisplayMetrics().ydpi;

我想做的是:取较短边的dpi尺寸(纵向模式的上边缘)并使RelativeLayout的高度等于它。

我正在尝试这个:

chessBoardLayout = (RelativeLayout) findViewById(R.id.chessBoardLayout);

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, (int) device_xdpi);
            chessBoardLayout.setLayoutParams(params);

但它没有用。

如何将device_xdpi转换为正确的dp?

2 个答案:

答案 0 :(得分:1)

由于device_xdpi以像素为单位,因此

public static int convertPixelsToDp(float px, Context context){
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    int dp = (int)(px / (metrics.densityDpi / 160f));
    return dp;
}

答案 1 :(得分:1)

constructor you're using像素,而不是dp。也就是说,您可以在没有任何dp /像素转换的情况下获得最短边的大小:

  • 在XML中将布局的两个维度设置为MATCH_PARENT
  • 测量后,在RelativeLayout上使用getWidth()getHeight()
  • 获取两者中较小的一个,并在新的LayoutParams中设置宽度/高度