2013-11-29 3 views
10

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

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

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

+0

Кажется, что это не представляется возможным, и что также идет против руководства по стилю Android. Альтернативы: создание пользовательского представления или попросить дизайнера использовать стандартный шаблон для Android. – Imanol

+0

проверьте это http://developer.android.com/reference/android/app/ActionBar.LayoutParams.html. У меня тоже такая же проблема: в AppCompact Custom Actionbar в 2.X actionbar полноэкранный. Это может вам помочь. – Dharmik

ответ

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) { 

    } 
+0

Вам больше не нужно это делать, поскольку с помощью lolillop вы можете использовать новую панель инструментов api и установить высоту http://stackoverflow.com/questions/26491689/how-do-i-declare-an-extended-height-toolbar- action-bar-on-android-lollipop – Imanol

+0

Не удалось: DeclaredField «mContentHeight», кажется, больше не доступен – 1111161171159459134

2

ответ RyanCheu работал для меня, но я обнаружил, что если я выбрал текст в деятельности, панель инструментов выбора текста появилась в размере панели действий по умолчанию, которая изменила размер активности, которая удалила выделение текста, поэтому было невозможно использовать функции «Копировать» и «Выбрать все». В итоге я вернулся к использованию тем для установки высоты панели действий и программным образом изменяя темы с помощью setTheme() и recreate(). Пример кода здесь:

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

Смежные вопросы