关于左边留间隔的问题marginLeft

vnking 2014-10-24 04:56:11
用marginLeft="10dp"来设置距离左边的间隔,但我的要求有点不同。

对于不同的屏幕分辩率,不想采用具体的间隔像素,而是要求一个百分比。

比如:我想让一个控件居中,左右离边缘各有10%的间隔,这应该如何实现呢?

即对于480x???的屏幕,左右各留48个像素
对于1200x????的屏幕,左右各留120个像素。
...全文
403 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangdong20 2014-10-27
  • 打赏
  • 举报
回复
用LinearLayout的weight属性
MR__P 2014-10-27
  • 打赏
  • 举报
回复
如果你能明确比例的话可以用weight属性
  • 打赏
  • 举报
回复
左右各加个View占位,然后用weight和gravity。
vnking 2014-10-27
  • 打赏
  • 举报
回复
感觉都有些复杂
yubingqiang123 2014-10-27
  • 打赏
  • 举报
回复
这个是我做的一个不同手机屏幕的适配,看一下对你有帮助有 DisplayMetrics displayMetrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int screenWidth = displayMetrics.widthPixels; int screenHeight = displayMetrics.heightPixels; System.err.println("打印高:" + screenWidth); System.err.println("打印宽:" + screenHeight); if (screenWidth == 480) { rate = (int) (textsize * (float) screenWidth / 480); rate = (int) (textsize * (float) screenHeight / 800); int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); game_img.measure(w, h); int height = game_img.getMeasuredHeight(); System.out.println("出来" + height); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams( 150, 35); layoutParam.setMargins(70, 0, 0, 0); layoutParams.topMargin = height / 2 + 9; layoutParam.topMargin = height / 2 + 9; game_gjchu.setGravity(Gravity.CENTER); game_gjchu.setLayoutParams(layoutParams); rubberView.setGravity(Gravity.CENTER); rubberView.setLayoutParams(layoutParam); } else if (screenWidth == 1080) { rate = (int) (textsize * (float) screenWidth / 1080 * 1.2); rate = (int) (textsize * (float) screenHeight / 1920 * 1.2); int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); game_img.measure(w, h); int height = game_img.getMeasuredHeight(); System.out.println("出来" + height); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams( 300, 80); layoutParam.setMargins(130, 0, 0, 0); layoutParams.topMargin = height / 2 + 9; layoutParam.topMargin = height / 2 + 9; game_gjchu.setGravity(Gravity.CENTER); game_gjchu.setLayoutParams(layoutParams); rubberView.setGravity(Gravity.CENTER); rubberView.setLayoutParams(layoutParam); } else if (screenWidth == 540) { rate = (int) (textsize * (float) screenWidth / 540 * 1.2); rate = (int) (textsize * (float) screenHeight / 960 * 1.2); int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); game_img.measure(w, h); int height = game_img.getMeasuredHeight(); System.out.println("出来" + height); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams( 150, 40); layoutParam.setMargins(70, 0, 0, 0); layoutParams.topMargin = height / 2 + 9; layoutParam.topMargin = height / 2 + 9; game_gjchu.setGravity(Gravity.CENTER); game_gjchu.setLayoutParams(layoutParams); rubberView.setGravity(Gravity.CENTER); rubberView.setLayoutParams(layoutParam); } else if (screenWidth == 720) { rate = (int) (textsize * (float) screenWidth / 720 * 1.2); rate = (int) (textsize * (float) screenHeight / 1280 * 1.2); int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); game_img.measure(w, h); int height = game_img.getMeasuredHeight(); System.out.println("出来" + height); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams layoutParam = new RelativeLayout.LayoutParams( 200, 60); layoutParam.setMargins(90, 0, 0, 0); layoutParams.topMargin = height / 2 + 9; layoutParam.topMargin = height / 2 + 9; game_gjchu.setGravity(Gravity.CENTER); game_gjchu.setLayoutParams(layoutParams); rubberView.setGravity(Gravity.CENTER); rubberView.setLayoutParams(layoutParam); } else { } game_jinbi.setTextSize(rate); game_shuoming2.setTextSize(rate); game_shuoming.setTextSize(rate); game_gjcishu.setTextSize(rate); game_gjcishu2.setTextSize(rate); }
网络咖啡 2014-10-24
  • 打赏
  • 举报
回复
把margin值写道dimens.xml文件中,使用value-XXX这样的文件来适配不同屏幕尺寸,每个这样的文件夹下面一个dimens.xml文件
小双 2014-10-24
  • 打赏
  • 举报
回复
代码添加也可以,获取屏幕尺寸,然后代码添加控件设置计算出来的长度宽度,还有margin
荔枝别闹了 2014-10-24
  • 打赏
  • 举报
回复
写一个适配文件
现在的APP Banner大多数千篇一律,前几天看到魅族手机上所有魅族自家APP上的Banner效果不错,于是就想着来仿着做一个类似的效果。因此就有了这个库。但是为了使用方便,这个库不仅仅只有仿魅族效果的BannerView 来使用,还可以当作普通的BannerView 来使用,还可以当作一个ViewPager 来使用。使用很方便,具体使用方法和API 请看后面的示例。 ---  左图为魅族APP上的Banner效果,右图是高仿效果。MZBannerView 有以下功能:1 . 仿魅族BannerView 效果。2 . 当普通Banner 使用3 . 当普通ViewPager 使用。4 . 当普通ViewPager使用(有魅族Banner效果)5 . 仿某视频网站Banner效果。Demo APKgif图片有点模糊,可以扫描下方二维码下载APK体验相关博客ViewPager系列之 仿魅族应用的广告BannerView更新日志v1.1.1 : 增加按住Banner 停止轮播,松开开始自动轮播的功能v1.1.0 : fix 在从网上获取数据后,banner 显示 造成 ANR 的bug(如果在onCreate()中设置资源显示则没问题)v1.1.2 : fix 更改数据之后,调用setPages重新刷新数据会crush的bugv2.0.0 :1,add: 添加仿魅族Banner效果,中间Page覆盖两边。 -- 2,fix 部分bug: 添加OnPageChangeListener 回调 pisition 不对的bug.DependencyAdd it in your root build.gradle at the end of repositories:allprojects {      repositories {           ...           maven { url 'https://jitpack.io' }      } }Step 2. Add the dependencydependencies {          compile 'com.github.pinguo-zhouwei:MZBannerView:v2.0.0' }自定义属性属性名属性意义取值open_mz_mode是否开启魅族模式true 为魅族Banner效果,false 则普通Banner效果canLoop是否轮播true 轮播,false 则为普通ViewPagerindicatorPaddingLeft设置指示器距离左侧的距离单位为 dp 的值indicatorPaddingRight设置指示器距离右侧的距离单位为 dp 的值indicatorAlign设置指示器的位置有三个取值:left 左边,center 剧中显示,right 右侧显示middle_page_cover设置中间Page是否覆盖(真正的魅族Banner效果)true 覆盖,false 无覆盖效果使用方法1 . xml 布局文件2 . activity中代码:mMZBanner = (MZBannerView) view.findViewById(R.id.banner);              // 设置数据         mMZBanner.setPages(list, new MZHolderCreator() {             @Override             public BannerViewHolder createViewHolder() {                 return new BannerViewHolder();             }         });  public static class BannerViewHolder implements MZViewHolder {         private ImageView mImageView;         @Override         public View createView(Context cont

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧