精华内容
下载资源
问答
  • Android:layout_width和Android:width的区别

    万次阅读 2019-08-04 15:21:39
    前言:今天看属性动画时发现当我们对一个Button按钮做动画时是没有效果的,代码如下: ... ObjectAnimator.ofInt(mButton,"width",500).setDuration(5000).start(); } @Override public void onClick(View v){ if...

    前言:今天看属性动画时发现当我们对一个Button按钮做动画时是没有效果的(解决办法),代码如下:

    private void performAnimate(){
        ObjectAnimator.ofInt(mButton,"width",500).setDuration(5000).start();
    }
    
    @Override
    public void onClick(View v){
        if(v == mButton) {
            preformAnimate();
        }
    }

    我们都知道属性动画需要动画作用的对象提供该属性的get和set方法,而Button中的getWidth和setWidth方法是继承与TextView中的方法,接下来大家就要去看一看源码,setWidth的源码如下:

    可以看到我们设置的是它的最大宽度和最小宽度。

    TextView的最大宽度和最小宽度对应的是xml文件中的android:layuout_width属性,而TextView还有一个属性Android:width,这个Android:width属性就对应了TextView的setWidth方法。

    那么Android:layout_width和Android:width的区别到底是什么呢

    就此我去网上搜了很多方法,答案和下面的都差不多

    • android:layout_width 只有三种选择一个是fill_parent ,二是wrap_content,三是match_parent
    • android:width 这个是用来view的具体宽度的,以像素为单位。

    写过布局的我们也都知道,layout_width也支持具体数值,width也支持各种单位dp、px、甚至sp。那么这两个属性到底有什么区别呢?

    首先我们应该知道一个控件的大小并不是由它自己本身来决定的,而是由父布局和它自身一起来决定的。

    而layout_width就是父布局允许view所占的宽度,而width是view的自身宽度。在layout_width和width都设置为具体数值的时候,width其实就无效了,这也不难理解,父布局已经给你分配了具体的空间,不论view怎么设置width,view的宽度也只能是layout_width。

    那么什么情况下,width也会起作用呢?当我们把layout_width设置成wrap_content的时候,父布局的意思是包裹view,view有多大就分配多大的空间给它,这时候view的宽度就取决于width,假如不设置width,那么系统就会根据view的内容来自行测量大小。layout_height和height是一样的。具体效果,可以写布局文件自己试一下,同时建议大家也试一下minWidth maxWidth这些属性,可以更好的帮助我们理解布局文件的原理。(参考自https://blog.csdn.net/u013320868/article/details/50961755

    展开全文
  • andriod studio的**attribute android:layout_width is not allowed here** 看过很多帖子说sdk有错的我也配了,gradle我也直接本地配了,sdk我也配了,Build文件的版本我也改成我的API版本了,实在是不知道该怎么...
  • match_parent:占据全部 wrap_content:只占据自己那部分

    在这里插入图片描述
    match_parent:占据全部
    wrap_content:只占据自己那部分

    展开全文
  • android:layout_width="@{@dimen/text_width}" android:layout_height="@{@dimen/text_height}" android:background="#e6e6e6" android:gravity="center
            <TextView
                android:layout_width="@{@dimen/text_width}"
                android:layout_height="@{@dimen/text_height}"
                android:background="#e6e6e6"
                android:gravity="center"
                android:text="my girl!" />


    dimens.xml文件的内容:

        <dimen name="text_width">200dp</dimen>
        <dimen name="text_height">80dp</dimen>

    运行之后,出现问题:


    碰到这类错误,setter for attribute,基本就是属性没有对应的setter,需要我们使用@BindingAdapter等来弄一个方法,进行绑定。

    或者方法的参数写错了。


    这里由于View里面是不存在layout_widht和layout_height的属性的,我们知道这个只有其实是通过父控件的布局参数设置的。

    所以需要设置@BindingAdapter。

        @BindingAdapter("android:layout_width")
        public static void setLayoutWidth(View view, float width) {
            ViewGroup.LayoutParams params = view.getLayoutParams();
            params.height = (int) width;
            view.setLayoutParams(params);
        }
    
        @BindingAdapter("android:layout_height")
        public static void setLayoutHeight(View view, float height) {
            ViewGroup.LayoutParams params = view.getLayoutParams();
            params.height = (int) height;
            view.setLayoutParams(params);
        }

    运行发生Binary XML file line#49: You must supply a layout_width attribute的错误:


    其实从图中可以看到在DataBindingUtil.setContentView(this, R.layout.activity_main);初始化执行的时候,需要给对应TextView的属性layout_width和layout_height设置值。

    而这里的setLayoutWidth()和setLayoutHeight()方法在初始化的时候并没有执行,所以TextView的这两个属性是没有值的。故报了上述的错误,解决方法也很简单,

    给一个默认值就可以了。

            <TextView
                android:layout_width="@{@dimen/text_width, default=@dimen/text_width}"
                android:layout_height="@{@dimen/text_height, default=@dimen/text_height}"
                android:background="#e6e6e6"
                android:gravity="center"
                android:text="my girl!" />

    @BindingAdapter("android:layout_width")
    public static void setLayoutWidth(View view, float width) {
        ViewGroup.LayoutParams params = view.getLayoutParams();
        params.height = (int) width;
        view.setLayoutParams(params);
    }
    
    @BindingAdapter("android:layout_height")
    public static void setLayoutHeight(View view, float height) {
        ViewGroup.LayoutParams params = view.getLayoutParams();
        params.height = (int) height;
        view.setLayoutParams(params);
    }

    这样子就可以了。



    参考文章:

    http://stackoverflow.com/questions/35295120/android-data-binding-layout-width-and-layout-height


    http://stackoverflow.com/questions/34769981/android-databinding-layout-width-you-must-supply-a-layout-width-attribut

    展开全文
  • 布局无法加载,xml也没有错误,提示NOTE: One or more layouts are missing the layout_width or layout_height attributes. These are required in most layouts 关闭Android Studio 进入C:\Users\UserName.android...

    布局无法加载,xml也没有错误,提示NOTE: One or more layouts are missing the layout_width or layout_height attributes. These are required in most layouts

    关闭Android Studio
    进入C:\Users\UserName\ .android目录,将build-cache重命名为buildcache.bak
    进入C:\Users\UserName\ .AndroidStudio3.2\system 目录
    (1) caches 重命名为 caches.bak
    (2) compiler 重命名为 compiler.bak
    (3) compile-server 重命名为 compile-server.bak
    (4) conversion 重命名为 conversion.bak
    (5) external_build_system 重命名为 external_build_system.bak
    (6) frameworks 重命名为 frameworks.bak
    (7) gradle 重命名为 gradle.bak
    (8) resource_folder_cache 重命名为 resource_folder_cache.bak

    启动Android Studio打开你的项目,问题就解决了

    以下是stackoverflow原答案:
    The issue is resolved by these changes:

    Close Android Studio
    Go to C:\Users\UserName.android and rename the build-cache folder to buildcache.bak
    Go to C:\Users\UserName.AndroidStudio3.2\system and rename these folders

    (1) caches to caches.bak
    (2) compiler to compiler.bak
    (3) compile-server to compile-server.bak
    (4) conversion to conversion.bak
    (5) external_build_system to external_build_system.bak
    (6) frameworks to frameworks.bak
    (7) gradle to gradle.bak
    (8) resource_folder_cache to resource_folder_cache.bak

    Open the Android Studio and open your project again.

    展开全文
  • //是这么个问题。   //其实它应该是这样才对: ...//在item文件里面的,有点的控件应该是 android:layout_width="match_parent" 最大化。 //但是却表现为: android:layout_width="wrap_conte...
  • 2. 将 AttributeSet 中 layout_width属性解析到 LayoutParams 的 width域中。 二 layout/layout_name.xml -> AttributeSet 简单说下AttributeSet,它的作用从名字可以看出了,其实就是属性的集合,它包含了 ...
  • Android Studio 出现 attribute android:layout_width is not allowed here等问题 我先说我的问题,换了台电脑工作,把项目从github上clone下来时出现大面积的此类错误,但是因为gradle下载缓慢,或者根本没有下载...
  • 分析xml根节点layout_width或者layout_height没有效果的原因
  • layout_widthwidth的区别

    千次阅读 2018-05-13 11:47:11
    效果如下:
  • Android:LinearLayout布局中...首先看一下LinearLayout布局中Layout_weight属性的作用:它是用来分配属于空间的一个属性,你可以设置他的权重。很多人不知道剩余空间是个什么概念,下面我先来说说剩余空间。
  • Android layout_widthlayout_weight关系

    千次阅读 2016-09-19 21:42:56
    至于宽度,Android系统会先不考虑任何外在因素,首先根据你的Layout_width设置分配需要的宽度,然后再根据权重比例分剩下来的屏幕空间 关于wrap_content比较容易理解,内容宽度即控件的宽度,剩余宽度就是整屏...
  • Android中的layout_widthwidth的区别

    千次阅读 2016-03-03 19:54:31
    在平时定义控件的高宽时一直都在使用layout_width,从没使用过width。但既然提供了width,就很想知道它俩的区别。于是查了一些资料。现在借鉴归纳如下。主要是给自己当笔记。android:width 其实是定义控件上面的文本...
  • 在Android的布局中,确定控件的大小一定会用到layout_widthlayout_height,这两个属性决定了控件的大小,但是还有两个属性width和height几乎没有被用到。从属性名来讲都是控制控件长宽的,那么这两个属性之间有...
  • layout_widthwidth,layout_height和height

    千次阅读 2016-01-05 20:09:31
    对于每个组件,可以独自的使用Layout _width ,layout_heigh直接的设置相对于父容器的大小。 android:width 的值,一般是 "100dp" 这样的数值; android:layout_width 的值,一般是"fill_parent","wrap_content",...
  • Render errors:One or more layouts are missing the layout_width or layout_height attributes如下图所示: 这个时候只要将Nexus 4 的android设备切换为其他类型的设备比如Nexus 5,试试看哪个可以
  • Android studio自从更新到3.2.1后,xm布局l文件中就出现Unknown attribute android:layout_width的提示,design页面也无法查看。各种异常不断。就是下面两句出现高亮并提示: android:layout_width="wrap_...
  • 转载自: ...但却不能只有heigh ,width,而没有Layout _width ,layout_height,因为那样的组件会看不到。如果你要使用heigh ,width的话,就要先设置Layout _wi
  • Unknown attribute android:layout_width...

    千次阅读 2018-10-19 13:32:46
    Unknown attribute android:layout_width, layout_height, id, gravity, layout_gravity, padding xml 标签界面属性全部报黄色,并且新建标签不会自动导入android:layout_width和android:layout_height. Tools-&...
  • 解决自定义View 设置 layout_widthlayout_height为wrap_content时还是充满父类代码如下 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure...
  • 表示剩下的都给我 android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_ver
  • android之layout_width/layout_height和weight

    千次阅读 2014-06-21 13:28:01
    2.当LinearLayout的android:orientation属性为horizontal(水平)时,layout_weight只对width有效。 3.当LinearLayout的android:orientation属性为 vertical (垂直)时,layout_weight只对height有效。 设...
  • Android studio attribute android:layout_width is not allowed here这个错误 是因为你的安卓版本选择和你的sdk版本不一致,我新建项目用的Android 4.4,但是sdk没有,所以去这里下载这个4.4版本就行。 ...
  • 原文地址:[原创]Android中的android:layout_width和android:width的区别
  • layout_widthwidth有什么区别

    千次阅读 2016-03-23 11:41:33
     我们在写布局文件的时候,声明控件的时候layout_width和...那么这两者之间究竟有什么区别呢,我记得原来看过网上的一些说法说layout_width只可以设置成wrap_content和match_parent,而width的单位只能设置成具体
  • android:layout_width:指定该子组件的布局宽度; 他们分别支持3种属性值,match_parent,fill_parent,wrap_content。match_parent:指定子组件的高度、宽度与父容器组件的高度、宽度相同。 fill_parent:作用与...
  • 在网上搜索了很多关于layout_weight的文章,众说纷纭,且都不准确。后来自己动手测试,通过分析计算得出以下...1、如果LinearLayout在其子组件相应排列方向上的大小值(layout_width/height)为wrap_content,则忽
  • 1,新建attr文件         2,在view构造函数中获取属性值: ...TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.album, defStyleAttr, 0);... int width = a.
  • 当使用view的layout_weight属性时,可以将layout_width设置为0,原因是这样可以让系统减少一次长度或宽度的计算。 官方解释如下: In order to improve the layout efficiency when you specify the weight,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 507,444
精华内容 202,977
关键字:

layout_width