我的应用程序中有一个像滑动菜单栏的Facebook,其中应用程序的两个内容和主要布局由自定义布局类处理。
我想删除我的应用的标题栏
问题:
即使我放置
机器人:Theme.Light.NoTitleBar
在我的清单中,标题栏有一个空格。由此我的整个布局被推倒了。
我尝试过使用
requestWindowFeature(Window.FEATURE_NO_TITLE);
和
getWindow()setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
但仍未删除标题栏空间。
这就是应用程序的样子
我认为这是由于Custom LinearLayout类保存了主要的滑动布局。但我无法从自定义布局类中删除标题栏空间。 建议更好的解决方案。
自定义布局类
public class MainLayout extends LinearLayout {
public MainLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MainLayout(Context context) {
super(context);
}
// Overriding LinearLayout core methods
// layout based on the children
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
mainLayoutWidth = MeasureSpec.getSize(widthMeasureSpec);
menuRightMargin = mainLayoutWidth * 10 / 100;
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
menu = this.getChildAt(0);
content = this.getChildAt(1);
content.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return MainLayout.this.onContentTouch(v, event);
}
});
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
if(changed) {
LayoutParams contentLayoutParams = (LayoutParams)content.getLayoutParams();
contentLayoutParams.height = this.getHeight();
contentLayoutParams.width = this.getWidth(); LayoutParams menuLayoutParams = (LayoutParams)menu.getLayoutParams();
menuLayoutParams.width = this.getWidth() - menuRightMargin;
}
menu.layout(left, top, right - menuRightMargin, bottom);
content.layout(left + contentXOffset, top, right + contentXOffset, bottom);
}
}
答案 0 :(得分:5)
您可以直接在活动的清单文件中指定
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
答案 1 :(得分:3)
最后我能够删除标题栏空间。 事实证明,包括这个标签
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
在清单中的应用程序使应用程序全屏并更正了问题。但我希望状态栏在我的应用程序中可见。 所以我不得不妥协安置标题栏空间没有减少的android版本的状态栏,并让它在其他版本上相同。 所以这就是我如何解决它。
在Manifest中,我保留了代码
android:theme="@android:style/Theme.Light.NoTitleBar"
删除应用中的标题栏
在使用自定义线性布局的活动中,我检查了Android版本,并将应用程序全屏保留在小于等于Gingerbread的版本上。
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
答案 2 :(得分:1)
在清单文件中尝试此操作
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
答案 3 :(得分:0)
将android:theme属性添加到AndroidManifest.xml:
<application android:theme="@android:style/Theme.NoTitleBar">
答案 4 :(得分:0)
希望这可以帮助你。
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
答案 5 :(得分:0)
Theme.NoTitleBar
似乎只适用于整个应用程序,而不是活动本身。所以把它放在应用程序标签中(在清单中):
<application android:theme="@android:style/Theme.NoTitleBar">
然后,为每个活动添加任何自定义样式。
希望它有所帮助。
答案 6 :(得分:0)
在value \ style.xml中 定义名称和主题 例如,
然后转到你的androidmainfest.xml 在...之类的活动中添加 android:theme =“@ style / NoActionBar”