如何在Attributes文件中定义文本颜色

时间:2016-08-26 14:30:17

标签: android android-layout android-fragments tooltip

我正在创建一个工具提示,我使用this库创建一个。它描述了attr以后更改字体颜色,这是要添加到attr.xml个文件中的代码

declare-styleable name="TooltipLayout">
    <attr name="ttlm_padding" format="dimension" />
    <attr name="ttlm_strokeColor" format="color" />
    <attr name="ttlm_backgroundColor" format="color" />
    <attr name="ttlm_strokeWeight" format="dimension" />
    <attr name="ttlm_cornerRadius" format="dimension" />
    <attr name="ttlm_arrowRatio" format="float" />
    <attr name="android:textAppearance" />
    <attr name="ttlm_overlayStyle" format="reference" />
    <attr name="ttlm_elevation" format="dimension" />

    <!-- font file path inside your assets folder -->
    <attr name="ttlm_font" format="string" />

    <!-- textview text gravity -->
    <attr name="android:gravity" />
</declare-styleable>

这可能很简单,但我无法理解如何在attr文件中给出颜色和指定值。

请指导我。

修改

代码

Tooltip.make(context,
                                            new Tooltip.Builder(101)
                                                    .anchor(editText, Tooltip.Gravity.BOTTOM)
                                                    .closePolicy(new Tooltip.ClosePolicy()
                                                            .insidePolicy(true, false)
                                                            .outsidePolicy(true, false), 3000)
                                                    .text("AA")
                                                    .maxWidth(800)
                                                    .withArrow(true)
                                                    .withOverlay(true)
                                                    .floatingAnimation(Tooltip.AnimationBuilder.DEFAULT).fitToScreen(true)
                                                    .withStyleId(R.attr.ttlm_backgroundColor,R.color.black_54)
                                                    .withStyleId(R.color.black)

                                                    .build()
                                    ).show();

1 个答案:

答案 0 :(得分:1)

您正在使用declare-stylable。顾名思义,用于定义what,而不是how

这使您可以在布局中设置样式。

<com.mypackage.MyCustomView
android:layout_width=".."
...
app:ttlm_cornerRatius="4dp" />

然后,您应该在customView中获取样式属性并将其应用于视图。例如

public ToolTipLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(context, attrs); //override the constructors and make an init method that passes the `AttributeSet`
}

private void init(Context context, AttributeSet attrs) {
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable. TooltipLayout);
    int buttonType = a.getInt(R.styleable.TooltipLayout_ ttlm_cornerRadius, 0);
    a.recycle();
}

希望这会有所帮助:)

PS。从我脑海里打出这个,可能会有一些错别字。