覆盖Android视图,例如MyHeading:TextView

覆盖Android视图,例如MyHeading:TextView,android,inheritance,xamarin,xamarin.android,Android,Inheritance,Xamarin,Xamarin.android,救命啊!在VS2017上使用Xamarin,我试图实现以下目标: 一个MyHeading类,我可以像普通的TextView类一样在任何地方使用,除了任何MyHeading实例都将继承我仅为MyHeading定义的填充/边距/样式/字体等 我迷路了,运气不好,在谷歌上找不到任何有用的东西 我创建了MyHeading.cs,它继承了TextView: public class MyHeading : TextView { public MyHeading(Context context) :

救命啊!在VS2017上使用Xamarin,我试图实现以下目标:

一个MyHeading类,我可以像普通的TextView类一样在任何地方使用,除了任何MyHeading实例都将继承我仅为MyHeading定义的填充/边距/样式/字体等

我迷路了,运气不好,在谷歌上找不到任何有用的东西

我创建了MyHeading.cs,它继承了TextView:

public class MyHeading : TextView
{
    public MyHeading(Context context) : base(context)
    {

    }
}
然后,我还在包含以下xml的Resources/layout文件夹中创建了myheading.xml:

<?xml version="1.0" encoding="utf-8"?>
<com.my.app.MyHeading    
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/mygrey"
android:textSize="18dp"
android:textStyle="bold"
android:typeface="sans"
android:gravity="center"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp" />
正如评论所建议的(我也是),在Android上创建
样式
比创建视图子类更合适、更常见

例子 参考资料/值/样式.xml

匹配父项
包装内容
@颜色/红色
18dp
大胆的
桑
居中
20dp
10dp
其他风格~~~
AXML示例:

输出:


回复:

我建议使用安卓系统,这是一种更常见的共享通用样式的模式。至于你遇到的问题,我相信你需要添加缺少的构造函数重载,并扩大你的自定义布局。非常感谢你的遗留问题。我直接过了这一关,但很酷地看到Android以类似于CSS等的方式支持样式。这对我来说很有效,干杯。@Aaron没问题,很高兴它有所帮助。当我编辑样式和主题时,我总是希望有一个视觉继承/树样式编辑器。。。。也许有一年谷歌会为此做点什么,哈哈。。。嘿,寿司,不知你能否帮我回答另一个问题?
Java.Lang.NoClassDefFoundError: android.support.v7.appcompat.R$drawable
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="MyHeadingStyle" parent="android:Widget.TextView">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">@color/red</item>
        <item name="android:textSize">18dp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:typeface">sans</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_marginTop">20dp</item>
        <item name="android:layout_marginBottom">10dp</item> 
    </style>
    ~~~ other styles ~~~
</resources>
<TextView
    android:text="StackOverFlow"
    style="@style/MyHeadingStyle" />