getActivity / TitleBar

Android 标题栏框架,从此布局属性不用记
Apache License 2.0
1.75k stars 217 forks source link

[建议]:希望添加类似于ActionBar的setSubTitle直接使用,而无需自己自定义内嵌布局的功能 #63

Closed ChinaFLTV closed 1 year ago

ChinaFLTV commented 1 year ago

你觉得框架有什么不足之处?【必答】

暂时没有

issue 是否有人曾提过类似的建议?【必答】

框架文档是否有提及到此问题?【必答】

你觉得该怎么去完善会比较好?【非必答】

No response

getActivity commented 1 year ago

小伙子,经过深思熟虑,最终不采纳这个建议,具体原因如下:

  1. 目前子标题的需求比较少,大多数情况下还是只有一个主标题

  2. 目前框架的设计是三个 TextView,如果再添加一个 TextView 可能会导致性能下降

但是仍然有其他方式来实现你的需求,目前提供两种实现思路给到你这边

第一种方案:在 xml 布局中直接嵌套自定义的布局

<com.hjq.bar.TitleBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:paddingTop="5dp"
        android:paddingBottom="5dp" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="我是主标题"
            android:textColor="#333333"
            android:textSize="15sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dp"
            android:text="我是副标题"
            android:textColor="#666666"
            android:textSize="14sp" />

    </LinearLayout>

</com.hjq.bar.TitleBar>

第二种方案:在代码中,使用《换行符+富文本+设置多行》方式来实现

SpannableStringBuilder builder = new SpannableStringBuilder();
int startPoint = builder.length();
builder.append("我是主标题");
builder.append("\n");
int endPoint = builder.length();
ForegroundColorSpan imageSpan = new ForegroundColorSpan(Color.RED);
builder.setSpan(imageSpan, startPoint, endPoint, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.append("我是副标题");

titleBar.getTitleView().setSingleLine(false);
titleBar.setTitle(builder);
ChinaFLTV commented 1 year ago

好的,谢谢