精华内容
下载资源
问答
  • weight和height问题

    千次阅读 2019-04-26 14:52:12
    标题 weight和height问题

    标题 weight和height问题

    在这里插入图片描述

    展开全文
  • 注意在 labelimg 标注图像时 生成的size 那里的 weight 和height 有时候为0。 在执行label.py的时候会提示错,如下: root@jdh-Precision-Tower-5810:/home/meiling/darknet/quexian# python label.py Traceback ...

    RT  

    注意在  labelimg  标注图像时  生成的size 那里的  weight 和height 有时候为0。

    在执行label.py的时候会提示错,如下:

    root@jdh-Precision-Tower-5810:/home/meiling/darknet/quexian# python label.py
    Traceback (most recent call last):
      File "label.py", line 57, in <module>
        convert_annotation(  image_id)
      File "label.py", line 44, in convert_annotation
        bb = convert((w,h), b)
      File "label.py", line 15, in convert
        dw = 1./size[0]
    ZeroDivisionError: float division by zero

    此时检查一下:

    展开全文
  • :任何使用 addView(...) 的方法,无论你所实例化的 View 本身的 xml 的 width height 设置了什么,都是没效果的,请看清楚,是 width height 失效,上面的 scaleType 是有效的, 问题 java 代码中调用 addView ...
    本文转自:一个关于 imageView 设置 scaleType 的问题。
    

      就在刚才 晚上9 点多的时候,我的一个外包伙伴发一个工程代码我,叫我去看下这样一个"bug",说折腾了很久,图片选择器在选择完图片后,就要显示图片到界面上,大家可以想象下 微信 发表图片,因为我们相机的图片肯定是 长宽都不一致的,为了统一格式,一般都是把要显示出来的 imageView 设置成 scaleType = centerCrop 或者 center。

      问题就是:他在设置了上面的属性后,宛然无效!imageView 设置成 scaleType = centerCrop 或者 center,对图片没效果。

      先上事例图:

      理想效果 和 问题效果(左->右):

        

      公用的 xml:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:paddingBottom="@dimen/activity_vertical_margin"
     6     android:paddingLeft="@dimen/activity_horizontal_margin"
     7     android:paddingRight="@dimen/activity_horizontal_margin"
     8     android:paddingTop="@dimen/activity_vertical_margin"
     9     tools:context=".MainActivity" >
    10 
    11     <LinearLayout
    12         android:id="@+id/images_container"
    13         android:paddingLeft="10dp"
    14         android:orientation="horizontal"
    15         android:layout_width="wrap_content"
    16         android:layout_height="wrap_content">
    17         
    18 
    19 
    20     </LinearLayout>
    21 
    22 
    23 </RelativeLayout>

      我们来看看出问题的代码:

      imageView 的 xml:

    1 <?xml version="1.0" encoding="utf-8"?>
    2 <ImageView
    3     xmlns:android="http://schemas.android.com/apk/res/android"
    4     android:id="@+id/image_one"
    5     android:scaleType="centerCrop"
    6     android:layout_width="30dp"
    7     android:layout_height="30dp" />

      他设置了动态 addView() 的方法 添加用户选中的 图片,java 代码,为了避免长篇大论,我已做简化,事例效果一样:

    1 @Override
    2     protected void onCreate(Bundle savedInstanceState) {
    3         super.onCreate(savedInstanceState);
    4         setContentView(R.layout.test);
    5         final ImageView image = (ImageView) LayoutInflater.from(this).inflate(R.layout.send_post_image, null, false);
    6         LinearLayout images_container = (LinearLayout) findViewById(R.id.images_container);
    7         image.setImageResource(R.drawable.beni);
    8         images_container.addView(image);
    9     }

         这样的代码,貌似没什么问题,通过 LayoutInflater.from(this).inflate(...) 来事例化一个 View,而最为之关键的是,这个View 就是上面的 imageView的xml,里面明确设置了 width 和 height 是 30dp,显示方式是 centerCrop,最后通过 addView 添加到一个 linearLayout 中。但是,这份代码显示出来的效果是 右图,非 理想效果!!哈哈,感觉恍然大悟吧。

      你可能会有这样一个印象,我们绝大多项目或者是练习中的 imageVIew 使用都是直接findViewById, 一样的 imageView 设置,却没问题, 没错,的确没问题,你可以把上面的代码替换为这个试试:

       test.xml 换为:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:paddingBottom="@dimen/activity_vertical_margin"
     6     android:paddingLeft="@dimen/activity_horizontal_margin"
     7     android:paddingRight="@dimen/activity_horizontal_margin"
     8     android:paddingTop="@dimen/activity_vertical_margin"
     9     tools:context=".MainActivity" >
    10 
    11     <LinearLayout
    12         android:id="@+id/images_container"
    13         android:paddingLeft="10dp"
    14         android:orientation="horizontal"
    15         android:layout_width="wrap_content"
    16         android:layout_height="wrap_content">
    17         <ImageView
    18             android:id="@+id/image"
    19             android:scaleType="centerCrop"
    20             android:layout_width="30dp"
    21             android:layout_height="30dp" />
    22 
    23 
    24     </LinearLayout>
    25 
    26 
    27 </RelativeLayout>

      java 换为

    1 @Override
    2     protected void onCreate(Bundle savedInstanceState) {
    3         super.onCreate(savedInstanceState);
    4         setContentView(R.layout.test);
    5         final ImageView image = (ImageView)findViewById(R.id.image);
    6         image.setImageResource(R.drawable.beni);
    7     }

      这样显示出来的 效果 就是我们所 期望的。

       为什么通过 addView() 的方法却败了呢

       问题的原因是这样的:任何使用 addView(...) 的方法,无论你所实例化的 View 本身的 xml 的 width 和 height 设置了什么,都是没效果的,请看清楚,是 width height 失效,上面的 scaleType 是有效的, 问题 java 代码中调用 addView 的时候并没有传入 LayoutParam 布局参数,好了,我们来 粘下 源码,见证真相只有一个。

     1 /**
     2      * <p>Adds a child view. If no layout parameters are already set on the child, the
     3      * default parameters for this ViewGroup are set on the child.</p>
     4      * 
     5      * <p><strong>Note:</strong> do not invoke this method from
     6      * {@link #draw(android.graphics.Canvas)}, {@link #onDraw(android.graphics.Canvas)},
     7      * {@link #dispatchDraw(android.graphics.Canvas)} or any related method.</p>
     8      *
     9      * @param child the child view to add
    10      *
    11      * @see #generateDefaultLayoutParams()
    12      */
    13     public void addView(View child) {
    14         addView(child, -1);
    15     }
    16 
    17 public void addView(View child, int index) {
    18         if (child == null) {
    19             throw new IllegalArgumentException("Cannot add a null child view to a ViewGroup");
    20         }
    21         LayoutParams params = child.getLayoutParams();
    22         if (params == null) {
    23             params = generateDefaultLayoutParams();
    24             if (params == null) {
    25                 throw new IllegalArgumentException("generateDefaultLayoutParams() cannot return null");
    26             }
    27         }
    28         addView(child, index, params);
    29     }
    30 
    31 protected LayoutParams generateDefaultLayoutParams() {
    32         return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    33     }

      因为没有自己传入 LayoutParam 而 get 的又是 null ,为什么 get 的会是null,请在上面的事例代码中加入这句 log,Log.d("zzzzz",""+image.getLayoutParams()); ,就会看到输出 null 了,而最终调用源码的:

    protected LayoutParams generateDefaultLayoutParams() {
        return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    }
    直接使用了 Wrap_parent,所以啊,导致了失效。那我就是要使用 addView 怎么办?自己加个宽高限制即可。
    
     1 @Override
     2     protected void onCreate(Bundle savedInstanceState) {
     3         super.onCreate(savedInstanceState);
     4         setContentView(R.layout.test);
     5         final ImageView image = (ImageView) LayoutInflater.from(this).inflate(R.layout.send_post_image, null, false);
     6         LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(50,50); /** 这里 */
     7         LinearLayout images_container = (LinearLayout) findViewById(R.id.images_container);
     8         image.setLayoutParams(lp); /** 添加 */
     9         image.setImageResource(R.drawable.beni);
    10         Log.d("zzzzz", "" + image.getLayoutParams());
    11         images_container.addView(image);
    12     }

    行了,快1点了。。。。

      总结下。 导致这样的事情发生,我觉得还是缺少自己动手踏实编码的问题,现在框架比较泛滥了,又想起了那句老话:我们不生产代码,我们都是 github 的搬运工 ...

    
    

    如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力


    展开全文
  • 问题:我们定义的weightheight什么时候包括padding、border、margin或者什么时候不包括padding、border、margin?

    问题:我们定义的weight、height什么时候包括padding、border、margin或者什么时候不包括padding、border、margin?

    ?????????????

    CSS3中盒子的box-sizing属性

    展开全文
  • weight是比重,在线性布局中用来分配各组件的空间. ...1.若要AB严格按照weight比例分配空间,则必须设置两个的height都为0或者都为fillparent. 2.若其中有一个为wrapcontent,且weight设为0,则不管其他组件wei...
  • 1、只声明一个控件,但想达到如下的效果占满屏幕一半,该使用什么属性呢: ...使用weightsum属性即可解决: 2、四个TextView,除了内容不同,其它属性都一样,代码如下: xmlns:tools="http://schemas.an
  • android:id="@+id/project_content_value_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/detail_item_circleProgre
  • android之layout_width/layout_height和weight

    千次阅读 2014-06-21 13:28:01
    (垂直)时,layout_weight只对height有效。 设布局控件为LinearLayout,其宽度为X,设置布局控件的android:orientation属性为horizontal(水平),在布局控件中放置n个Button,每个Button命名为b1、b2、...、...
  • #include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; int main() { int i,j,k; double h,w,bmi; while(scanf("... ...
  • 在我们写前台界面的时候,很多时候呢,需要让... 大家都知道min即小,max即大,故min-height也就是最小高度,max-height也就是最大高度,最小最大即产生了一个交互区,这个交互区可能就是我们用户体验的最佳区域了。
  • 最近在搞UI部分,对布局有了一定的认识(仅限于各人的理解...首先对android:layout_height="0.0dip"的属性很是迷惑,在网上找了一大堆的东西,其实也并没有说出来一个所以然来。找了很多文章发现一个规律就是:当andro
  • 一. 在LinearLayout 布局下使用 weight作为一个view在父View下的权重 一个View的空间根据设置的原始空间 + 按比例分割的...每个子View设置为width="fill_parent" 或者height = "0dp",weight="1" 通过计算可以知道...
  • imutils中resize的width和height关系介绍当参数只有width参数只有height参数有width和height总结 介绍 imutils中resize,我们一般就传入两个参数,一个需要修改大小的图像,一个weight或者是height,是根据的长宽比...
  • 一个快速的python脚本,可按季节抓取玩家的身高体重,并以CSV格式输出。 我使用BeautifulSoupRequests从Basketball-Reference.com获取数据。 请记住,根据互联网连接来获取数据是一个非常缓慢的过程。 这是一个...
  • 3、可以设置高度、宽度以及内外边距 元素显示模式的转换 转换为块元素:display:block 转换为行内元素:display:inline 转换为行内块元素:display:inline-block 注意点 1.height继承问题 1、height是不能继承的;...
  • layout_weight属性的用法意义

    万次阅读 多人点赞 2019-05-07 10:01:02
    一直没理解在LinearLayout中的layout_weight属性的意义,使用的时候都是将子控件的layout_width或者layout_height设置为0,然后在设置layout_weight的权重值,以至于在被问到如果设置了layout_width为具体的值时对...
  • 现在网页布局为头部 左侧右侧。现在通过脚本来计算子左侧右侧的自适应 html结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" ...
  • int weight; object() { cout << "obj的构造函数" << endl; } ~object() { cout << "obj的析构函数" << endl; } }; class box :public object{ public: int height, width;
  • android:layout_width="match_parent" ... android:layout_height="match_parent"  android:orientation="vertical" >    android:layout_gravity="right" 当前元素在父元素的位置  android:gravity="righ
  • 定义一个基类Object类,有数据成员weight及相应的操作函数,由此派生出Box类,增加数据成员height和width及相应的操作函数,声明一个Box对象,观察构造函数与析构函数的调用顺序。 代码: #include <iostream>...
  • 定义一个Person类,包含姓名(name)、身高(height)、体重(weight),以及speak()方法,该方法的功能是,输出自己的身高体重信息。 Person类实现Comparable接口,实现比较两个Person对象的大小,比较规则是:...
  • #include using namespace std; class People{ ...double height; double weight; static int num; public: People(int a ,double h,double w){ age=a; height=h; weight=w; num++;}

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,402
精华内容 560
关键字:

weight和height