社区
Android
帖子详情
关于左边留间隔的问题marginLeft
vnking
2014-10-24 04:56:11
用marginLeft="10dp"来设置距离左边的间隔,但我的要求有点不同。
对于不同的屏幕分辩率,不想采用具体的间隔像素,而是要求一个百分比。
比如:我想让一个控件居中,左右离边缘各有10%的间隔,这应该如何实现呢?
即对于480x???的屏幕,左右各留48个像素
对于1200x????的屏幕,左右各留120个像素。
...全文
403
8
打赏
收藏
关于左边留间隔的问题marginLeft
用marginLeft="10dp"来设置距离左边的间隔,但我的要求有点不同。 对于不同的屏幕分辩率,不想采用具体的间隔像素,而是要求一个百分比。 比如:我想让一个控件居中,左右离边缘各有10%的间隔,这应该如何实现呢? 即对于480x???的屏幕,左右各留48个像素 对于1200x????的屏幕,左右各留120个像素。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangdong20
2014-10-27
打赏
举报
回复
用LinearLayout的weight属性
MR__P
2014-10-27
打赏
举报
回复
如果你能明确比例的话可以用weight属性
骑着蜗牛去爬山
2014-10-27
打赏
举报
回复
左右各加个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
打赏
举报
回复
写一个适配文件
MZBannerView-仿魅族BannerView,图片轮播控件,支持多种模式切换:普通ViewPager使用,普通Banner使用,仿魅族Banner使用。.zip
现在的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 则为普通ViewPagerindicatorPadding
Left
设置指示器距离左侧的距离单位为 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
FrameLayout设置
margin
无效
FrameLayout设置
margin
无效 一、
问题
背景 在FrameLayout中子View设置了android:layout_
margin
Left
,在4.0以下的机型中,展示效果没有距离
左边
的
间隔
;4.0及以上机型则显示正常。 二、
问题
分析 根据
问题
的现象,明显是父view在布局子view时出现的
问题
。因此,需要分析FrameLayout的onLayout方法的源码。 And
app简单控件了解——视图——设置视图的间距
android:layout_
margin
Top="30dp" -----该属性的作用是让当前视图与上方
间隔
一段距离 android:layout_
margin
Bottom="30dp"-----该属性的作用是让当前视图与下方
间隔
一段距离 android:layout_
margin
Left
="30dp"-----该属性的作用是让当前视图与
左边
间隔
一段距离 android:layout_mar...
Android适配UI动态设置View视图控件的间距
一、动态设置View视图控件的间距如下布局,要动态控制TextView距离顶部的间距:1、需求:RelativeLayout有一个背景宽高为1635*1029px的图片,需要TextVie...
Android
80,351
社区成员
91,288
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章