如何以编程方式设置动作条的高度

问题描述 投票:10回答:2

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

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

android android-actionbar android-actionbar-compat
2个回答
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) {

    }

2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.