如何去除Android中的titlebar,网上的三种方法均报错的解决方案

本文介绍了在Android开发中去除应用Titlebar的三种方法,并通过实践发现去除Titlebar的有效途径取决于Activity的具体类型。

初学Android做工程一定会遇到想要去除Titlebar的冲动

 

网上搜了下大致有三种方法:

1.实现应用中的所有activity都全屏

在manifest中直接加入

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

2.实现单个activity全屏
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.TYPE_STATUS_BAR, WindowManager.LayoutParams.TYPE_STATUS_BAR);
3.实现单个activity去掉title栏
requestWindowFeature(Window.FEATURE_NO_TITLE);

但是逐一尝试,不但没有生效反而还会报错:

经过反复尝试和对比发现问题不是这些方法有误,而是生成的类集成的Activity不同,如下箭头activity是MainActivity extends ActionBarActivity这样的。把后面的ActionBarActivity改成Activity再次尝试可以通过。

    

 

package com.videogo.ui.login; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; import com.videogo.openapi.EZOpenSDK; import ezviz.ezopensdk.R; import androidx.appcompat.app.AppCompatActivity; import java.util.Calendar; import java.util.Locale; public class FanHui extends AppCompatActivity { private static final String TAG = "EZPreview"; private String mAppKey; private String mDeviceSerial; private String mVerifyCode; private String mAccessToken; private int mCameraNo; private TextView mDateTextView; private int mSelectedYear, mSelectedMonth, mSelectedDay; private static final String KEY_APPKEY = "appkey"; private static final String KEY_SERIAL = "serial"; private static final String KEY_VERIFYCODE = "VerifyCode"; private static final String KEY_ACCESSTOKEN = "accessToken"; private static final String KEY_CAMERANO = "cameraNo"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ez_playback_list_page); extractParametersFromIntent(); final Calendar calendar = Calendar.getInstance(); mSelectedYear = calendar.get(Calendar.YEAR); mSelectedMonth = calendar.get(Calendar.MONTH); mSelectedDay = calendar.get(Calendar.DAY_OF_MONTH); // 设置日期显示模块 setupDatePicker(); View fanHui = findViewById(R.id.fanhui); fanHui.setOnClickListener(v -> finish()); Button huifangBtn = findViewById(R.id.fanhui); huifangBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建Intent跳转到FanHui活动 Intent intent = new Intent(FanHui.this, MainActivity.class); // 传递必要参数(可选) intent.putExtra("deviceSerial", mDeviceSerial); intent.putExtra("cameraNo", mCameraNo); intent.putExtra("accessToken", mAccessToken); intent.putExtra("appkey", mAppKey); intent.putExtra("verifyCode", mVerifyCode); startActivity(intent); } }); } private void setupDatePicker() { // 获取标题栏 TitleBar titleBar = findViewById(R.id.title); // 创建日期显示布局 View datePickerLayout = getLayoutInflater().inflate(R.layout.date_picker_layout, titleBar, false); // 初始化日期文本和按钮 mDateTextView = datePickerLayout.findViewById(R.id.date_text); ImageButton datePickerButton = datePickerLayout.findViewById(R.id.date_picker_button); // 设置初始日期显示 updateDateDisplay(); // 设置日期选择按钮点击事件 datePickerButton.setOnClickListener(v -> showDatePickerDialog()); // 将日期布局添加到标题栏 titleBar.addView(datePickerLayout); } private void updateDateDisplay() { // 月份需要+1(因为Calendar.MONTH从0开始) String formattedDate = String.format(Locale.getDefault(), "%d年%02d月%02d日", mSelectedYear, mSelectedMonth + 1, mSelectedDay); mDateTextView.setText(formattedDate); } private void showDatePickerDialog() { DatePickerDialog datePickerDialog = new DatePickerDialog( this, (view, year, month, dayOfMonth) -> { mSelectedYear = year; mSelectedMonth = month; mSelectedDay = dayOfMonth; updateDateDisplay(); }, mSelectedYear, mSelectedMonth, mSelectedDay ); datePickerDialog.show(); } private void extractParametersFromIntent() { Bundle extras = getIntent().getExtras(); if (extras != null) { mAppKey = extras.getString(KEY_APPKEY, ""); mDeviceSerial = extras.getString(KEY_SERIAL, ""); mVerifyCode = extras.getString(KEY_VERIFYCODE, ""); mAccessToken = extras.getString(KEY_ACCESSTOKEN, ""); mCameraNo = extras.getInt(KEY_CAMERANO, 0); Log.d(TAG, "Received parameters:"); Log.d(TAG, "AppKey: " + mAppKey); Log.d(TAG, "DeviceSerial: " + mDeviceSerial); Log.d(TAG, "VerifyCode: " + mVerifyCode); Log.d(TAG, "AccessToken: " + mAccessToken); Log.d(TAG, "CameraNo: " + mCameraNo); } else { Log.e(TAG, "No parameters received from intent"); // 如果没有参数,可以显示错误信息并退出 // finish(); } } } 解决上述代码报错:Cannot resolve symbol 'TitleBar' Cannot resolve symbol 'date_picker_layout' Cannot resolve method 'addView(android.view.View)' Cannot resolve symbol 'DatePickerDialog' Cannot resolve symbol 'DatePickerDialog' Incompatible types. Found: '<lambda parameter>', required: 'int' Incompatible types. Found: '<lambda parameter>', required: 'int' Incompatible types. Found: '<lambda parameter>', required: 'int' Cannot resolve method 'show()'
最新发布
06-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值