android设置高度比例,Android View设置宽高比
直接上代码(代码可直接复制使用)
1、布局设置
ConstraintLayout 有个属性可以控制比例:layout_constraintDimensionRatio
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/head_female_icon"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="5:4"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
image.png
2、代码设置
//根据宽高比设置控件宽高, 如设置宽高比为5:4,那么widthRatio为5,heightRatio为4
public static void setWidthHeightWithRatio(View view, int width, int widthRatio, int heightRatio) {
if (width <= 0) width = view.getWidth();
int height = width * heightRatio / widthRatio;
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
if (layoutParams != null) {
layoutParams.height = height;
layoutParams.width = width;
view.setLayoutParams(layoutParams);
}
}
3、自定义控件式
新建RatioRelativeLayout 继承RelativeLayout
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.RelativeLayout;
/**
* 自定义高宽比布局
*/
public class RatioRelativeLayout extends RelativeLayout {
private float ratio;
public RatioRelativeLayout(Context context) {
super(context);
}
public RatioRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
//获取自定义属性值
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RatioRelativeLayout);
ratio = typedArray.getFloat(R.styleable.RatioRelativeLayout_ratio, 0.0f);
}
public RatioRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//获取宽度的模式和尺寸
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
if (ratio != 0) {
//根据宽高比ratio和模式创建一个测量值
heightMeasureSpec = MeasureSpec.makeMeasureSpec((int) (widthSize * ratio), MeasureSpec.EXACTLY);
}
//必须调用下面的两个方法之一完成onMeasure方法的重写,否则会报错
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
/**
* 设置高宽比
*
* @param ratio 宽高比(比如:高:宽 = 4:5,ratio=0.8)
*/
public void setRatio(float ratio) {
this.ratio = ratio;
}
}
在styles.xml文件中添加自定义属性
使用
android:id="@id/common_relate_layout_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:ratio="1"/>
android设置高度比例,Android View设置宽高比相关推荐
- android设置高度比例,Android控件设置宽高比的方法
0. 困扰很久的问题 Android控件的宽和高保持比例,这是从我接触Android以来,一直不断会遇到的需求.以前,要么就是在代码里直接设置宽和高,要么就是自定义控件.网上也有开源的自定义ViewG ...
- android设置高度比例,android开发layout按比例布局(详解)
释放双眼,带上耳机,听听看~! 由于Android的复杂性,在写程序的时候经常会遇见一些难题,也可能会遇见处理不了的问题,下面是技术狗小编详解android layout 按比例布局的代码,一起进入下 ...
- 关于div容器高度随着浏览器宽度按照宽高比自适应的问题(css解决方案)
div容器html代码: <div class="swiper"></div> div容器样式代码(此处的31.25%为div容器内容的宽高比,比如div内 ...
- [Android] ListView关于adapter多种view设置
使用的关键点是在adapter覆盖两个方法 public int getItemViewType(int position) public int getViewTypeCount() 其它的可另go ...
- android开发根据分辨率设置高度,【android】根据屏幕分辨率设置底栏高度
标签:安卓 public void setFooterHeightWithScreen() { //得到屏幕分辨率 int srcWidth =getWindowManager().getDefaul ...
- Android图片颜色比例,Android开发学习之路-图片颜色获取器开发(1)
系列第一篇,从简单的开始,一步一步完成这个小项目. 颜色获取就是通过分析图片中的每个像素的颜色,来分析整个图片的主调颜色,有了主调颜色,我们可以用于图片所在卡片的背景或者标题颜色,这样整体感更加强烈. ...
- android 主流屏幕比例,Android 主流屏幕以及适配
一.Android版本比例测试:(数据来源:腾讯优测) 较主流的系统版本:部分旗舰机可以适配android7.0:目前大部分手机为6.0,比如各大厂商的旗舰机,其余大部分为android5.0,一般可 ...
- android模拟器用户比例,[Android]如何给android4.2模拟器开启多用户
上周同时拿到了android4.2的SDK和源代码,启动了个手机版的模拟器,结果发现多用户用不起来,后来查看源代码发现卡在一个地方: #vi frameworks/base/core/java/and ...
- android gridview设置高度,android设置GridView高度自适应,实现全屏铺满效果
使GridView每个item的高度自适应拉伸,达到整个GridView刚好铺满全屏的效果. public static void setGridViewMatchParent(GridView gr ...
- Android中PopupWindow遮罩层的设置
在Android应用开发中,PopupWindow是很常见的,也是我们经常用到的,这里先来说说一下属性: popupWindow.showAsDropDown(view,view.getWidth() ...
最新文章
- 解决Linux安装过程中不能安装Grub的问题
- 【OpenCV3】图像的读取、显示与保存
- Oracle 用户、对象权限、系统权限
- Ubuntu中vi / vim编辑器快捷操作
- python web server_Python实现简易版的Web服务器(推荐)
- 批处理命令Start
- 安装串口设备驱动时遇到 Windows 无法验证此设备所需的驱动程序的数字签名。最近的硬件或软件更改安装的文件可能未正确签名或已损坏,或者可能是来自未知来源的恶意软件. 问题该如何处理?...
- freeradius+mysql+交换机认证
- Apache POI 安全漏洞
- 用python怎样解偏微分方程组_用Python数值求解偏微分方程
- 大数据进阶(一):4个最受欢迎的大数据可视化工具(抛砖引玉篇)
- 按头安利 好看又实用的手绘图标素材看这里
- 程序员在国外:在加拿大IT公司工作三年的一些感受
- html+css基础教程之html简介和元素
- 第四章 sysrepo共享内存机制
- 华为服务器管理工具uMATE
- CF1027D Mouse Hunt(topo总结)
- 霸气!女学霸考692分想当“程序媛”,女王式发言:也没见男生考得比我好
- TYPEC 转HDMI VGA+PD+ USB3.0 HUB+TF/CF/SD+RJ45等多功能扩展坞方案设计资料|TYPE-C转HDMI转VGA带PD USB3.0多功能拓展器方案介绍
- PDF中几个的空白页怎么删除?
热门文章
- python爬虫练习2:取道指成分股数据
- 如何刷访问量 的详细介绍
- 微信小游戏制作坦克大战(二)添加主角坦克
- 如何提高你的工作效率
- ppt编辑数据链接文件不可用_excel表格编辑数据不可用-ppt插入的自带图表点击编辑数据时显示链接文件不可用...
- 软件测试之TCP、UPD协议详解
- python初学:expected an indented block 报错
- Dbviusalizer报错Java.lang.ClassCastException: javax.swing.KeyStroke cannot be cast to java.lang.Compar
- MSP430f149红外接收头——读任意红外遥控器键值并显示于数码管
- MyCms 活码二维码(动态二维码)源码版介绍