gpt4 book ai didi

android - 如何根据 LinearLayout 自己的样式设置 LinearLayout 的 subview 的样式?

转载 作者:行者123 更新时间:2023-11-30 01:31:14 25 4
gpt4 key购买 nike

抱歉,标题可能令人困惑

所以我使用的是 ViewPagerIndicator,这是在 5.0 发布 TabLayout 之前通常用于选项卡的库。在此库中,选项卡是扩展 TextView 的 View ,它接受自定义样式属性。

//An inner class of TabPageLayout
private class TabView extends TextView {
private int mIndex;

public TabView(Context context) {
super(context, null, R.attr.vpiTabPageIndicatorStyle); //<--custom attribute
}
// ...
}

vpi__attrs.xml

<resources>
<declare-styleable name="ViewPagerIndicator">
...
<!-- Style of the tab indicator's tabs. -->
<attr name="vpiTabPageIndicatorStyle" format="reference"/>
</declare-styleable>
...

有了这个设置,当我在自己的项目中使用 TabPageLayout 时,我可以像这样定义文本的样式

<!--This is styles.xml of my project -->
<style name="MyStyle.Tabs" parent="MyStyle" >
<item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item>

</style>

<style name="CustomTabPageIndicator">
<item name="android:gravity">center</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">@dimen/secondary_text_size</item>
...
</style>

以下样式将应用于 Activity,它将覆盖 ViewPagerIndicator 库中的默认 vpiTabPageIndicator。

我现在的问题是,我需要对 TabView 进行更多自定义,而不是 TextView 所允许的,因此我创建了一个名为“TabLayoutWithIcon”的新内部类,它扩展了 LinearLayout 并包含一个 TextView。

private class TabViewWithIcon extends LinearLayout {
private int mIndex;
private TextView mText;

public TabViewWithIcon(Context context) {
super(context, null, R.attr.vpiTabPageIndicatorStyle);
//setBackgroundResource(R.drawable.vpi__tab_indicator);
mText = new TextView(context);
}
...

public void setText(CharSequence text){
mText.setText(Integer.toString(mIndex) + " tab");
addView(mText);
}

public void setImage(int iconResId){
mText.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0);
mText.setCompoundDrawablePadding(8); //Just temporary
}

现在相同的自定义样式应用于 LinearLayout,但我还想为子 TextView 设置样式。我该怎么做?

当然,我也可以在 TabViewWithIcon 中以编程方式传入 TextView 的样式,例如

       mText.setTextAppearance(context, R.style.CustomTabTextStyle);

但是我将不得不在库中编写我的自定义样式,这是我不应该做的。

是不是需要重新定义一些属性什么的?我是在错误地处理这个问题吗?

最佳答案

我是个白痴,我刚刚将自定义 TextView 样式传递给了 TextView

    public TabView(Context context) {
super(context, null, R.attr.vpiTabPageIndicatorStyle);
//setBackgroundResource(R.drawable.vpi__tab_indicator);
mText = new TextView(context, null, R.attr.vpiTabPageIndicatorStyle);
}

关于android - 如何根据 LinearLayout 自己的样式设置 LinearLayout 的 subview 的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35731485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com