这个XML代码如何以编程方式传递给CustomView构造函数?

时间:2019-10-14 16:09:08

标签: java android android-studio

**Guys i need help i am trying learn to **do** front-end work programmatically? How i should to do this XML layout in Custom View constructor? Thanks in advance! How i should make custom view constructor like this XML?**

    `<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     app:cardCornerRadius="4dp"
     android:layout_margin="2dp">

<RelativeLayout

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="4dp">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="50dp"
        android:layout_height="50dp"
       />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Text1"
        android:textSize="18sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@+id/imageView"/>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Text2"
        android:textSize="14sp"
        android:textStyle="italic"
        android:textColor="@android:color/black"
        android:layout_below="@id/textView1"
        android:layout_toEndOf="@+id/imageView"/>


</RelativeLayout>

`

我需要帮助吗,我正在尝试学习以编程方式进行前端工作吗?我应该如何在Custom View构造函数中进行此XML布局?提前致谢!我应该如何使自定义视图构造器像这种XML?

1 个答案:

答案 0 :(得分:0)

可以以编程方式构建视图,但是您确实应该使用XML。这样,您的应用程序行为,逻辑(在代码中)和UI(在XML中)就被分离了。而且,用XML创建布局要快得多。

以下是使用自定义视图的示例,它内部有一个文本视图:

public class MyRelativeLayout extends RelativeLayout {

    private TextView textView;

    public MyRelativeLayout(Context context) {
         super(context); 
         textView = new TextView(context);
         textView.setText("Hello");

         //we must use LayoutParams objects to manage layout properties programmatically
          RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
                    (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
          params.leftMargin = 5;
          params.rightMargin = 5;
          textView.setLayoutParams(params);

          addView(textView); //add to our layout
    }

} 

我只添加了一个文本视图,只设置了边距,但代码已经很长了,与此同时,您可以像这样简单地在XML中完成所有操作:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_margin="5dp"
            android:text="Hello"/>
</RelativeLayout>

布局变得越复杂,用XML创建布局就越好。长话短说,请使用XML进行布局,然后将其添加到代码中,而不是创建自定义视图。