我正在Android操作栏中实现自定义视图。问题是在某些情况下,我需要将操作栏的高度加倍以使视图完全显示。我可以使用自定义主题设置高度,但是此高度是静态的。
是否可以通过编程方式更改操作栏的高度?
您可以使用反射(可能不是个好主意):
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) {
}
[RyanCheu的答案对我有用,但是我发现,如果我在活动中选择了文本,则文本选择工具栏将以默认的操作栏大小出现,这将调整活动的大小,从而删除了文本选择,因此无法使用复制并选择所有功能。最后,我回到使用主题设置操作栏高度的方法,并使用setTheme()和recreate()以编程方式更改主题。示例代码在这里: