如何从View构造函数设置layout_width / height

时间:2019-04-07 02:06:32

标签: java android android-linearlayout android-custom-view viewgroup

$ db2 grant dbadm on database to user dbuser DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0552N "TSSADM" does not have the privilege to perform operation "GRANT". SQLSTATE=42502 内,我正在创建新的RecyclerView,然后设置其布局参数,如下所示:

CustomView

现在我观察到@NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { CustomView customView= new CustomView(parent.getContext() /*, ...otherCustomArgs*/); customView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT )); // ... } 有很多构造函数-LinearLayout的扩展类。

CustomView

现在显然有一种在实例化时将宽度/高度传递给这些构造函数的标准方法,这就是将XML布局中的/** {@link LinearLayout(Context)} {@link LinearLayout(Context, AttributeSet)} {@link LinearLayout(Context, AttributeSet, int)} {@link LinearLayout(Context, AttributeSet, int, int)} */ 传递到类中的方式。

为了保持标准,我想在自定义构造函数中使用其中之一,即:

layout_width/height

我猜想,因为此自定义构造函数实际上不会在XML布局中使用,因此不必遵循标准构造,但是默认构造函数对XML CustomView extends LinearLayout { CustomView(Context context, LayoutArgs layoutArgs, Object... otherCustomArgs){ this(context, ...layoutArgs); // Use otherCustomArgs } } 所做的其他事情可能是{{1 }}不会。

1 个答案:

答案 0 :(得分:1)

根据the Layouts, Attributes, and You blog post

  

要逐个子地更改内容,布局使用layout_属性形式的另一种机制,将其添加到子视图中。这些属性是不同的,因为 layout_属性是父ViewGroup的说明,而不是View本身的说明。

因此,您的CustomView不会将布局参数传递给您-它们会传递给您将CustomView添加到的任何布局。然后,父级布局将使用这些值来measure and layout您的CustomView。