环氧树脂:在使用自定义视图创建的环氧树脂模型中未遵守版式边距

时间:2018-06-23 15:35:10

标签: android epoxy

我一直在测试环氧树脂库,但似乎无法从自定义视图方法创建的环氧树脂模型遵守布局边距的设置。根据环氧树脂的介绍,有3种创建环氧树脂模型的方法:

  1. 注释自定义视图
  2. 使用Android数据绑定
  3. 使用视图持有人模式

Epoxy的指导材料在这里:https://github.com/airbnb/epoxy/wiki/Epoxy-Models

我一直在尝试使用相同布局的自定义视图方法和数据绑定方法,并获得了不同的结果。

从下面的屏幕截图中,您可以看到自定义视图环氧树脂模型显示的卡视图没有边距-即使xml显示我已经设置了一个10dp的layout_margin。似乎在cardview内应用了边距,但是我没有设置填充。

对于数据绑定视图环氧树脂模型,正确显示了10dp的布局边距。

我还创建了一个示例应用程序,您可以在此处下载它进行测试:https://github.com/Winghin2517/epoxy_example1

enter image description here

对于自定义视图环氧模型,我使用了以下HeaderView.java文件:

@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT, fullSpan=false)
public class HeaderView extends CardView {

    @BindView(R.id.hello)
    TextView hello;

    public HeaderView(Context context) {
        super(context);
        init();
    }


    private void init() {
        inflate(getContext(), R.layout.header_view, this);
        ButterKnife.bind(this);
    }

    @TextProp(defaultRes = R.string.app_name)
    public void setTitle(CharSequence title) {
        this.hello.setText(title);
    }

}

布局文件(R.layout.header_view):

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/cardview"
    android:layout_margin="10dp"
    card_view:cardElevation="5dp"
    card_view:cardBackgroundColor="@color/colorAccent"
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:gravity="center"
        android:id="@+id/hello"
        android:text="Hello"/>

</android.support.v7.widget.CardView>

然后我创建了package-info.java文件,以从数据绑定视图生成环氧树脂模型:

@EpoxyDataBindingLayouts(R.layout.introduction_view)
@PackageModelViewConfig(rClass = R.class)
package example.com.exampleepoxy;

import com.airbnb.epoxy.EpoxyDataBindingLayouts;
import com.airbnb.epoxy.PackageModelViewConfig;

这是R.layout.introduction_view文件:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable name="title" type="String" />
    </data>

    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        card_view:cardElevation="5dp"
        android:id="@+id/cardview"
        card_view:cardBackgroundColor="@color/colorPrimary"
        >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:id="@+id/hello"
            android:text="@{title}"
           />

    </android.support.v7.widget.CardView>

</layout>

有人知道我如何让环氧树脂遵守自定义视图环氧树脂模型的边距设置吗?

0 个答案:

没有答案