Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 布局宽度和布局高度_Android_Android Layout - Fatal编程技术网

Android 布局宽度和布局高度

Android 布局宽度和布局高度,android,android-layout,Android,Android Layout,有没有什么方法可以让我不必在自定义视图中添加layout_width和layout_height参数?我知道有一些内置android视图不需要提供这些属性。什么时候不使用高度和宽度参数?我不确定,但我认为这会导致他们甚至没有出现在布局上 请在此处查找Dave建议的同一份参考资料 所有视图组都包括宽度和高度(布局、宽度和宽度) 布局(U高度),每个视图都需要定义它们。许多的 LayoutParams还包括可选的边距和边框 看来,你必须这么做 视图不负责决定是否可以/应该提供这些属性。父视图组指示这

有没有什么方法可以让我不必在自定义视图中添加layout_width和layout_height参数?我知道有一些内置android视图不需要提供这些属性。

什么时候不使用高度和宽度参数?我不确定,但我认为这会导致他们甚至没有出现在布局上

请在此处查找Dave建议的同一份参考资料

所有视图组都包括宽度和高度(布局、宽度和宽度) 布局(U高度),每个视图都需要定义它们。许多的 LayoutParams还包括可选的边距和边框


看来,你必须这么做

视图不负责决定是否可以/应该提供这些属性。父视图组指示这些属性是否是必需的。例如,TableRow使它们成为可选的。其他布局(LinearLayout、FrameLayout等)需要这些参数。

如果您希望减少公共和冗余属性,则应尝试设置样式


开发者指南。

问题在于
ViewGroup.LayoutParams.setBaseAttributes()
使用严格的
getLayoutDimension(int,String)
。 您需要扩展所需的任何LayoutParams并覆盖
setBaseAttributes
。 在内部,您可以手动设置宽度和高度,也可以使用更宽松的
getLayoutDimension(int,int)
。最后,您必须在layout类中重写您正在使用自己的LayoutParams

   @Override
   public LayoutParams generateLayoutParams(AttributeSet attrs) {
       return new LayoutParams(getContext(), attrs);
   }

   public static class LayoutParams extends FrameLayout.LayoutParams {
       public LayoutParams(Context context, AttributeSet attrs) {
           super(context, attrs);
       }

      @Override
      protected void setBaseAttributes(TypedArray a, int widthAttr, int heightAttr) {
         width = a.getLayoutDimension(widthAttr, WRAP_CONTENT);
         height = a.getLayoutDimension(heightAttr, WRAP_CONTENT);
      }
  }

与表非常相似,我不需要它们,因为父视图控制子视图的布局参数。因此,我在XML中指定的属性根本不起任何作用。TableRow视图组如何解决这个问题?@NicholasRoge我不知道
视图组
,但它说它是一个
抽象类
(),而扩展它的类,他们实现了
layout\u height
layout\u width
@NicholasRoge,但正如我所说,我不知道。例如,能否定义视图组并将其用作xml中的布局?我对此表示怀疑。@NicholasRoge如果你想让家长安排你的CustomControl的宽度和高度,为什么不使用“匹配家长”?我没有这样想过。在这种情况下,我如何使父视图组允许XML“嘿,这家伙不需要向我展示这些东西。”?但我不想这样做。这是搬家。他们根本没有必要在那里。