首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在android中保持按钮的固定宽高比

在Android中保持按钮的固定宽高比可以通过以下几种方式实现:

  1. 使用固定比例的布局:可以使用LinearLayout或RelativeLayout等布局容器来包裹按钮,并设置按钮的宽度和高度为0dp,然后通过设置权重(weight)来实现固定比例。例如,如果要保持按钮的宽高比为2:1,可以将按钮的宽度设置为0dp,高度设置为match_parent,并将按钮的权重设置为2。
代码语言:xml
复制
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:text="Button" />

</LinearLayout>
  1. 使用ConstraintLayout:可以使用ConstraintLayout来设置按钮的宽高比。首先,将按钮约束在父容器的四个边界上,然后设置按钮的宽度和高度比例。例如,如果要保持按钮的宽高比为2:1,可以将按钮的宽度设置为0dp,然后设置按钮的宽高比例为2:1。
代码语言:xml
复制
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintDimensionRatio="2:1"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:text="Button" />

</androidx.constraintlayout.widget.ConstraintLayout>
  1. 使用自定义View:可以创建一个继承自Button的自定义View,并重写onMeasure方法来实现固定比例的宽高。在onMeasure方法中,根据指定的宽高比例计算出按钮的宽度和高度,并调用setMeasuredDimension方法设置按钮的测量尺寸。
代码语言:java
复制
public class FixedRatioButton extends Button {

    private static final float RATIO = 2.0f; // 宽高比例

    public FixedRatioButton(Context context) {
        super(context);
    }

    public FixedRatioButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FixedRatioButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = (int) (width / RATIO);
        int newHeightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
        super.onMeasure(widthMeasureSpec, newHeightMeasureSpec);
    }
}

然后,在布局文件中使用自定义View替代原来的Button。

代码语言:xml
复制
<com.example.myapplication.FixedRatioButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button" />

以上是在Android中保持按钮的固定宽高比的几种方法。根据具体的需求和场景,选择合适的方法来实现即可。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android中使控件保持固定宽高比几种方式

我们在android开发过程可能会遇到一种情况,一个组件需要保持固定宽高比,但是组件本身大小却不定。比如我们需要让一个组件宽度与屏幕宽度一致,这样就无法确定宽度。那么如何让控件保持固定宽高比?...adjustViewBounds 为ImageView设置adjustViewBounds,如下: android:adjustViewBounds="true" 这样ImageView就会以图片宽高比显示...使用PercentFrameLayout也可以实现一个组件固定比例显示,代码如下: <android.support.percent.PercentFrameLayout android:layout_width...ConstraintLayout 这种方式与百分比布局类似,使用是ConstraintLayoutDimensionRatio属性,代码如下: <android.support.constraint.ConstraintLayout...在上面示例我们将ImageView宽高都设置为0。就此我测试了其他可能性,产生几个情况如下: 1、如果组件宽高都设置0dp,组件宽高按比例,且只受父view约束。

2.6K20
  • 何在keras添加自己优化器(adam等)

    2、找到keras在tensorflow下根目录 需要特别注意是找到keras在tensorflow下根目录而不是找到keras根目录。...一般来说,完成tensorflow以及keras配置后即可在tensorflow目录下python目录中找到keras目录,以GPU为例keras在tensorflow下根目录为C:\ProgramData...找到optimizers.pyadam等优化器类并在后面添加自己优化器类 以本文来说,我在第718行添加如下代码 @tf_export('keras.optimizers.adamsss') class...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

    45K30

    关于Android StudioRun按钮是灰色解决

    查了一下论坛,额,然后我这里是只做了一步就可以了: 就是点击一下锤子按钮(Make Project)右边选项卡,把选项置于  app  这一项即可,运行按钮瞬间变绿: ?...---- 以下文章转载自:关于Android StudioRun按钮是灰色解决 2016年07月21日 14:54:40 拿来人家工程用,就是有各种版本啊设置啊问题,要晕了。。。...首先是,在不同AS,gradle版本不同,下载sdk版本不同,这些,都在gradle(Project、Models)相关代码里调过来就好。之前文章里有说过。...在model下拉框中选择app.如果下拉框没有app,(可能有工程名),那么请先去设置: tools ->Android->sync project with gradles files; 更新好后...launch option 设置好指定activity就好。 暂时,出现问题就是这些。解决了。

    8.2K20

    Android Studio preview 不固定及常见问题解决办法

    Android Studio提供了一个强大“Preview”工具,可以帮助您预览您布局文件将如何在用户设备上呈现。XML布局可能是Android开发中最常用资源。...它还允许您查看布局不同配置,例如在纵向或横向时外观,或者TextView在多个语言环境(英语,德语或希腊语)上外观。...前阵子用 AndroidStudio,不知道点错了什么按钮,preview 视图窗口不是固定在一侧。只要点击 xml 界面,就隐藏了 preview 窗口,根本开发不了。...如果你没有足够符合所有ImageView要求宽高比图片(jpg等),会发生什么?...这时可以使用tools:layout_height和tools:layout_width,并且设置一个固定颜色toos:background来预览各个尺寸下图片可以在ImageView占用空间。

    3.8K30

    Android应用实现跳转计数和模式切换按钮

    问题描述 在程序应用,我尝试引入了两个新功能:连续点击跳转UI和切换按钮名称模块显示。...用户在使用过程遇到了以下问题: 连续点击跳转UI问题:首次连续点击八次能成功跳转UI,但在第二次尝试时无法跳转。 按钮创建问题:应用在每次操作时创建两个按钮,这种方法在视觉上和性能上都不够高效率。...第二个问题解决方案:控制按钮可见性 为了解决按钮创建问题,在同一个活动控制两个按钮可见性,而不是重复创建按钮: 用户可以通过点击“切换升级模式”按钮进入"升级模式"。...用户再次点击“退出升级模式”按钮返回到"蓝牙模式"。 通过这种方式,提升了用户界面的体验。 结论 通过上述解决方案,解决了用户在操作上不便,提升了应用整体性能,还可以优化UI便捷性。...谢谢大家阅读: )

    25140

    Android StudioRun按钮是灰色快速解决方法

    首先是,在不同AS,gradle版本不同,下载sdk版本不同,这些,都在gradle(Project、Models)相关代码里调过来就好。之前文章里有说过。...这时候,遇到问题:Run按钮灰色,失效。 点击Run旁边 Select Run/Debug Configuration按钮 ? 选择 Edit Configuration,于是: ?...在model下拉框中选择app.如果下拉框没有app,(可能有工程名),那么请先去设置: tools – Android- sync project with gradles files; 更新好后...设置好指定activity就好。...总结 以上所述是小编给大家介绍Android StudioRun按钮是灰色快速解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家

    4.6K30

    Android开发笔记(一百六十七)Android8.0画中画模式

    前面的博文《Android开发笔记(一百五十九)Android7.0分屏模式》介绍了Android7.0多窗口特性,但是这个分屏区域是固定,要么在屏幕上半部分...App页面从全屏模式切换到画中画模式,它Activity生命周期也会经历销毁后重建过程,如果开发者想保持App页面不被重建,则需给该页面的activity节点加上以下属性描述: android...对于视频播放页面,Activity代码同样不在onPause方法暂停播放视频,而应当在onStop方法暂停播放,并在onStart方法恢复播放视频。 3....按下任务键并点击“分屏模式”按钮,接着把App拖到分屏区域,即可实现分屏模式切换。然而系统却没提供“画中画模式”之类按钮,就无法在桌面把应用拖入画中画,只能在App内部通过代码切到画中画模式。...然后点击“进入画中画模式”按钮,此时整个页面缩小成屏幕右下角一块矩形窗口,将该视频窗口拖动到屏幕上方,可见如下图所示悬浮窗效果。 ?

    2.3K30

    《Monkey Android》第12课ImageView

    ImageViewXML属性 android:src,设置ImageView要显示图片; android:adjustViewBounds,是否保持宽高比,需要和maxWidth、maxHeight...一起使用,否则单独使用没有效果; android:maxWidth,设置View最大宽度; android:maxHeight,设置View最大高度; 如果想设置图片固定大小,又想保持图片宽高比,...android:scaleType是设置图片填充方式,有以下用法: android:scaleType=”center”,按图片原来size居中显示,当图片长/宽超过View长/宽,则截取图片居中部分显示...(缩小)到View宽度,显示在View上部分位置 android:scaleType=”fitXY”,把图片按照指定大小在View显示 android:scaleType=”matrix”,用matrix...在实际需求,我们可能会用到更高级用法,显示圆形头像,或者动态gif,又或者图片缩放与缩略图等等,这些就需要我们自己取实现ImageView了,后面都会讲到。

    65020

    何在Android避免创建不必要对象

    关于Java自动装箱与拆箱,参考文章Java自动装箱与拆箱 谨慎选用容器 Java和Android提供了很多编辑容器集合来组织对象。...如果对于一个搜索功能Activity,实际上保持一个Activity示例就可以了,使用standard模式会造成Activity实例过多创建,因而不好。...不要过多创建线程 在android,我们应该尽量避免在主线程执行耗时操作,因而需要使用其他线程。...关于HandlerThread文章,详解 Android HandlerThread 关于工作者线程,可以参考文章关于Android工作者线程思考 使用注解替代枚举 枚举是我们经常使用一种用作值限定手段...想要深入了解注解,可以阅读详解Java注解 选用对象池 在Android中有很多池概念,线程池,连接池。包括我们很长用Handler.Message就是使用了池技术。

    2.5K20

    Andorid自定义控件属性值设置

    背景提要 今天写一个简单自定义控件,实现宽固定,高度根据自定义宽高比例自动调整;或高固定,宽度随比例调整。...其中有一个 solid属性,想要像android:layout_width="match_parent" 里match_parent一样可以输入标记表示一定意义,这里solid表示固定是宽还是高...,: app:solid="solid_width" // solid_height 找源码 我们知道自定义控件属性是定义在attrs.xml文件里,所以猜测Android自带属性也为定义在其sdk...attrs.xml文件里到如下路径下: // 我使用是版本23sdk /sdk/platforms/android-23/data/res/values/attrs.xml 因layout_width...int width = 0; // 根据自定义宽高比例,高度适当比例改变 int height = 0; if (mSolid ==

    95720

    Cocos——UI多端适配之道

    在代码我们可以通过获取当前视图大小来得到实际屏幕分辨率宽高比,根据宽高比来决定是使用 Fit Height 模式还是 Fit Width 模式。...特殊情况 细心同学可能已经发现了, PC 端与 iPhone7 端宽高比其实是一样,按照我们上面的想法这两端应该显示一样背景区域,同时由于 PC 端宽高比 iPhone7 宽高要大,而场景所有节点都能享受到基于设计分辨率智能缩放...但是在第一张设计稿图中,设计同学要求 PC 端要占据更多背景区域,同时其中节点大小也与 iPhone7 节点大小保持相同,以保证 PC 端题目显示美观,这个时候我们就需要单独对 PC 端情况做适配...比如第一张设计稿图中倒计时节点,我们希望在不同屏幕分辨率情况下它都能够固定在屏幕左上角,不会出现随着屏幕分辨率改变而移到右上角情况。...假设按钮切图一倍图高度为 44,二倍图高度为 88,三倍图高度为 132,而在设计分辨率下按钮高度为 88,这个时候我们就要选择按钮切图二倍图。

    2.3K30

    DevExpress控件gridcontrol表格控件,如何在属性设置某一列显示为图片(图片按钮

    DevExpress控件gridcontrol表格控件,如何在属性设置某一列显示为图片(图片按钮)?效果如下图: ? 通过属性设置,而不用写代码。...由于此控件属性太多了,就连设置背景图片属性都有好几个地方可以设置。本人最近要移植别人开发项目,找了好久才发现这个属性位置。之前一直达不到这种效果。...然后点击Columns添加列,点击所添加列再按照如下步骤设置属性: 在属性中找到ColumnEdit,把ColumnEditTextEditStyle属性设置为HideTextEditor;  展开...ColumnEdit,把ColumnEditButtons展开,将其Kind属性设置为Glyph; 找到其中Buttons,展开,找到其中0-Glyph,展开,找到其中ImageOptions...注:本人用控件是17.2.7版本,其他版本不知道是否一样,仅作参考。

    6K50

    Android-ConstraintLayout详解(下)

    我们接着上一篇说一说ConstraintLayout其他属性,如果没看过上一篇:Android-ConstraintLayout详解 先罗列一下此次会议内容,我们此次介绍属性如下: Margin...有一个问题,我注册按钮和登陆按钮建立了约束,那如果我登陆按钮隐藏,就会造成注册按钮向左移动,那我想让注册按钮原地不动,怎么办?...,这里设置宽高比为16:6 那我们看一看百分比: ?...它可选值如下: barriers:找出xml屏障,并用简单约束取代它们 direct:优化那些直接连接到固定元素元素,例如屏幕边缘或引导线,并继续优化直接连接到它们任何元素。...standard:这是包含 barriers 和 direct 默认优化级别。 dimensions:通过计算维度来优化布局传递。 chains:计算出如何布置固定尺寸元素链。

    2.1K30

    【Flutter】Android、Flutter 折叠屏适配 ( 展开大屏 | 折叠主屏 | 折叠副屏 | 静态展示 | 动态热切换适配 | 拉伸布局 | X 轴自适应适配 | 布局重构 )

    、Flutter 程序配置 1、屏幕自适应配置 2、设置切换屏蔽宽高比不重启适配 3、设置最大最小屏幕比例 一、Android、Flutter 折叠屏适配 ---- 华为 Mate X 折叠屏有..., C 中上下出现黑边 , D 四周出现黑边 , 都不能出现 ; 三、折叠主屏适配 ---- 折叠主屏 就按照 全面屏样式进行适配 ; 折叠状态下 , 主屏要填充满整个屏幕 , A 样式 ;..., 仍然保持 19.5 : 9 屏幕适配即可 , 如下图 A ; 折叠状态下副屏 , 不能完全填充 , 以及以其它宽高比填充 , 只能以 19.5 : 9 比例填充 ; 下图中 , 只有..., 就需要自动切换屏幕样式 ; : 当前是 折叠状态主屏 打开应用 ( 此时宽高比 19.5:9 ) , 突然将手机打开开 , 变为 展开状态大屏 ( 此时宽高比 8:7.1 ) , 官方要求应用布局要实时切换成...android:value="2.1"/> 最值最小宽高比 : 在 AndroidManifest.xml 清单文件 application 节点下配置 <meta-data android

    5.9K10

    Android画中画(PIP)模式使用

    实现效果 代码实现 微卡智享 画中画设置 在manifestsactivity中加入画中画配置 <activity android:name=".MainActivity...,我们TextView显示为画中画模式,同时画中画按钮隐藏了,退后时文字改为正常模式,并且按钮也再显示出来。...正常模式 画中画模式 按钮启动画中画 onCreate事件中加入按钮事件,点击按钮启动画中画模式,这样一个简单画中画就实现了,确实要比原来做悬浮窗简单多了。...进入画中画模式中加入了actions按钮,点击后返回到正常模式,然后显示比例我们由默认横屏改为竖屏了。 setActions设置控件,基本就是按钮操作控制。...setAspectRatio设置画中画宽高比,第一个参数为分子,第二个为分母,指定宽高比,必须在 2.39:1或1:2.39 之间,否则会抛出IllegalArgumentException异常。

    2.4K10

    android刘海屏适配(刘海屏或圆角适配)

    通常,应用程序应仅使用SDK官方记录部分。特别是,这意味着当您通过诸如反射之类语义与类交互时,您不应该计划访问SDK未列出方法或字段。使用此类方法或字段存在破坏应用程序高风险。...第二张是compileSdkVersion 为28,targetSdkVersion为28正常需要显示场景,模拟器分辨率为1080 * 2280。那为何在最下方出现黑色区域呢?...正如前面说到安卓系统默认支持宽高比是1.7-1.8左右,现在流行全面屏手机分辨率宽高比大于了这个数,导致屏幕区域不能利用完全,就出现了黑色区域。解决办法也很简单。...节点下设置android:resizeableActivity=”true” 或者在AndroidManifest.xmlapplication设置 刘海屏 有刘海屏真机同学可以跳过这部分...我另外又同时为大家准备了另外一个适配场景,其中做了适配和没有做适配页面如下图: 想必大家从以上2个场景也能总结出刘海屏适配规则了: 就是界面的重要元素(例如按钮)不能被状态栏遮挡,需要充分利用状态栏显示区域

    2.1K10
    领券