当前位置: 首页 > 面试题库 >

带有Lollipop SDK的Android中的工具栏/ ActionBar中的字幕标题?

公冶森
2023-03-14
问题内容

我尝试了几种不同的方法,包括在这里找到的一种方法(这反过来又使我尝试了该问题的两个重要答案),以及使用反射来访问TextView并设置相关方法。两次尝试均失败,前者导致根本没有将文本设置为标题(我将文本设置为适当的textview元素),后者则设置了文本并删除了椭圆,但根本没有选框。以下是我的反思尝试。

import android.content.Context;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.TextView;
import android.widget.Toast;

import java.lang.reflect.Field;

public class MarqueeToolbar extends Toolbar {

    public MarqueeToolbar(Context context) {
        super(context);
    }

    public MarqueeToolbar(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MarqueeToolbar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void setTitle(CharSequence title) {
        if (!reflected) {
            reflected = reflectTitle();
        }
        super.setTitle(title);
    }

    @Override
    public void setTitle(int resId) {
        if (!reflected) {
            reflected = reflectTitle();
        }
        super.setTitle(resId);
    }

    boolean reflected = false;
    private boolean reflectTitle() {
        try {
            Field field = Toolbar.class.getDeclaredField("mTitleTextView");
            field.setAccessible(true);
            TextView titleView = (TextView) field.get(this);
            titleView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
            titleView.setMarqueeRepeatLimit(-1);
            return true;
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
            return false;
        } catch (IllegalAccessException e) {
            e.printStackTrace();
            return false;
        } catch (NullPointerException e) {
            e.printStackTrace();
            return false;
        }
    }
}

问题答案:

最终弄清楚了,这是因为,据我了解,设置选框的TextView必须先选择,然后才能真正开始选框。我更新了我在问题中发布的MarqueeToolbar类,可以在以下要点中找到它:html" target="_blank">https
://gist.github.com/InsanityOnABun/95c0757f2f527cc50e39



 类似资料:
  • 问题内容: 我的应用程序中有一个工具栏,例如: 我将标题添加为: 我已经读过Android工具栏中心标题和自定义字体 但是,如果我更改工具栏的xml,我不知道如何更改TextView的值。有人可以帮助我吗? 问题答案: 如果您具有自定义的工具栏布局,请不要用于设置标题。 相反,假设您的XML布局如下所示: 你需要调用,在某处你的可能是:

  • 我想这样做,但与折叠工具栏布局或滚动后在工具栏中显示徽标和标题。 请帮助我

  • 我一直在使用AppCompatv7 lib的最新工具栏。我在工具栏视图组中放置了一个文本视图,我想从我的活动片段中为这个文本视图设置一个标题。如果是自定义操作栏((ActionBarActivity)getActivity)。setcustomView(…)会完成任务的。但由于使用了这个工具栏,我无法使用它。此外,我在BaseActivity中实现了一个由所有活动继承的方法。此BaseActivi

  • 但是如果我更改工具栏的xml,我不知道如何更改TextView的值。有人能帮我吗?

  • 我在我的应用程序工具栏中的图标和导航图标之间有一个奇怪的边距(就像在图像中一样)。我不知道它是从哪里来的,怎么去除它。我在网上搜索后发现: 编辑>>解决方案 编辑