Как настроить высоту панели действий программно

Я реализую пользовательский вид внутри панели действий Android. Проблема в том, что при некоторых условиях мне нужно удвоить высоту панели действий, чтобы можно было полностью отобразить представление. Я могу установить высоту с помощью настраиваемой темы, но эта высота является статической.

Можно ли изменить размер панели действий программно?

Заранее спасибо

Ответ 1

Вы можете сделать это с помощью отражения (возможно, не очень хорошая идея):

    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(). Пример кода здесь:

fooobar.com/info/50239/...