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