如何以编程方式设置操作栏的高度

时间:2013-11-29 11:36:50

标签: android android-actionbar android-actionbar-compat

我正在android操作栏中实现自定义视图。问题是在某些情况下我需要将操作栏的高度加倍以允许视图完全显示。我可以使用自定义主题设置高度,但此高度是静态的。

是否可以以编程方式更改操作栏高度?

提前致谢

2 个答案:

答案 0 :(得分:4)

你可以使用反射(可能不是一个好主意)来做到这一点:

    Window window = getWindow();
    View v = window.getDecorView();
    int actionBarId = getResources().getIdentifier("action_bar", "id", "android");
    ViewGroup actionBarView = (ViewGroup) v.findViewById(actionBarId);
    try {
        Field f = actionBarView.getClass().getSuperclass().getDeclaredField("mContentHeight");
        f.setAccessible(true);
        f.set(actionBarView, 50);
    } catch (NoSuchFieldException e) {

    } catch (IllegalAccessException e) {

    }

答案 1 :(得分:2)

RyanCheu的回答对我有用,但我发现如果我在活动中选择了文本,则文本选择工具栏会出现在默认操作栏大小,这会调整活动的大小,从而删除了文本选择,因此它无法使用“复制”和“全选”功能。我最终回到使用主题来设置操作栏高度,并使用setTheme()和recreate()以编程方式更改主题。示例代码在这里:

https://stackoverflow.com/a/37974527/462162