按钮在不同设备中的相对位置

时间:2018-05-24 19:16:29

标签: android

enter image description here我遇到了与不同设备中按钮的相对位置有关的问题。我做了一个简短的应用程序来展示它。与红点相关的按钮在处理宽度量(坐标x)时表现得如此。但是,我不知道为什么当我选择较小的设备时,同一个Button从红点(坐标y)逐渐向下滚动。我为不同的设备选择合适的图像尺寸,对于宽和高,我也选择屏幕的相对尺寸:     rel_btn.width = 4 * width / 100;     rel_btn.height = 7 * height / 100;

我会向您展示xlarge屏幕的代码和结果屏幕,以防有人可以帮助我:

公共类MainActivity扩展了AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //width and height of the screen
    DisplayMetrics metrics = new DisplayMetrics();
    WindowManager windowManager = (WindowManager) MainActivity.this.getSystemService(Context.WINDOW_SERVICE);
    if (windowManager != null) {
        windowManager.getDefaultDisplay().getMetrics(metrics);
    }
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.test); // id del XML
        RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        rel_btn.width = 4*width/100; rel_btn.height = 7*height/100;
        // x, y of the BUTTON
        rel_btn.leftMargin = 15*width/100; rel_btn.topMargin = 66*height/100;
        Button btnTag = new Button(this);
        btnTag.setLayoutParams(rel_btn);
        btnTag.setBackgroundColor(Color.TRANSPARENT);
        btnTag.setId(0); // writes the ID
        btnTag.setOnClickListener(prueba);
        layout.addView(btnTag);
}

private View.OnClickListener prueba = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //width of the screen
        DisplayMetrics metrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) MainActivity.this.getSystemService(Context.WINDOW_SERVICE);
        if (windowManager != null) {
            windowManager.getDefaultDisplay().getMetrics(metrics);
        }
        int width = metrics.widthPixels;
        Button button = (Button) view;
        GradientDrawable drawable = new GradientDrawable();
        drawable.setShape(GradientDrawable.RECTANGLE);
        drawable.setStroke(Math.round((float) (0.6*width/100)), Color.BLUE);
        drawable.setColor(Color.TRANSPARENT);
        button.setBackgroundDrawable(drawable);
    }
};

} enter image description here

0 个答案:

没有答案