Android 如何以编程方式设置动作栏的高度
我正在Android操作栏中实现一个自定义视图。问题是,在某些情况下,我需要将操作栏的高度增加一倍,以便完全显示视图。我可以使用自定义主题设置高度,但此高度是静态的Android 如何以编程方式设置动作栏的高度,android,android-actionbar,android-actionbar-compat,Android,Android Actionbar,Android Actionbar Compat,我正在Android操作栏中实现一个自定义视图。问题是,在某些情况下,我需要将操作栏的高度增加一倍,以便完全显示视图。我可以使用自定义主题设置高度,但此高度是静态的 是否可以通过编程方式更改操作栏高度?您可以使用反射(可能不是一个好主意): RyanCheu的回答对我来说很有效,但我发现如果我在活动中选择了文本,文本选择工具栏将以默认的操作栏大小出现,从而调整了活动的大小,删除了文本选择,因此不可能使用复制和选择所有功能。最后,我回到了使用主题设置动作栏高度,并使用setTheme()和recr
是否可以通过编程方式更改操作栏高度?您可以使用反射(可能不是一个好主意):
RyanCheu的回答对我来说很有效,但我发现如果我在活动中选择了文本,文本选择工具栏将以默认的操作栏大小出现,从而调整了活动的大小,删除了文本选择,因此不可能使用复制和选择所有功能。最后,我回到了使用主题设置动作栏高度,并使用setTheme()和recreate()以编程方式更改主题。示例代码如下:
这似乎是不可能的,这也违背了Android风格指南。备选方案有:创建自定义视图或要求设计师使用标准android模式。请选中此选项。我也有同样的问题,在AppCompact中,2.X中的自定义Actionbar是全屏的。这可能会对您有所帮助。不再需要这样做,因为使用lolillop,您可以使用新的工具栏api并设置高度,但无法工作:DeclaredField“mContentHeight”似乎不再可用
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) {
}