我昨天开始为Android开发。我已经了解Java,所以你不必为初学者解释一般的Java东西。
信息: IDE:Android Studio(最新) 最低API:10
我想编写一个有趣的应用程序,用户在C4 Bomb UI中键入倒计时,并在输入后弹出炸弹。
我现在遇到的问题是我无法将元素边距放在屏幕的%。
这是一张带有文字字段,按钮和我用图像尺寸计算的边距的图像。
我该怎么做?
答案 0 :(得分:1)
您可以使用以下算法:
//declare two variables for width and height of the screen, that you could use later
private int screenWidth;
private int screenHeight;
//first get the size of the screen - call this method in the onCreate method of your Activity
private static void getScreenResolution(Context context){
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
}
//then use dynamically positioning of the elements as you use LayoutParameters for your elements like this:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //width, height
params.setMargins(11*screenWidth/100, 34*screenHeight/100, 0, 0);//left, top, right, bottom - here you could use the % like 11% from screenWidth = 11*screenWidth/100 (all the digits are for example)
//get the element which you want to be positioned at the current position (for example an ImageView)
ImageView myImage = (ImageView)findViewById(R.id.myImage);
myImage.setLayoutParams(params);
P.S。如果您的布局为RelativeLayout
,则应使用RelativeLayout.LayoutParams
代替Linearlayout.LayoutParams
(只需更改字词)
答案 1 :(得分:0)
您可以使用加权布局(图像左侧和右侧的空布局,然后再次将其换行以保持垂直)。假设我想在两侧创建边距为25%的图像,然后每个空布局的权重为1,对于图像为2。
更新: 这里有一个小例子,“视图”组件只是保证金的占位符 顶部和底部边距是高度的25%,而左边距和右边距是屏幕宽度的20%。
mule.bat start