android manifest.xml 标签汇总

本文详细介绍了如何在Android应用开发中解决EditText自动获取焦点的问题,通过定义Activity时添加特定属性来调整窗口软输入模式。同时,文章阐述了使用全局变量时在Manifest文件中正确声明的方法,特别强调了InfoClass类的应用实例。此外,还提供了隐藏标题栏和状态栏的两种实现方式:一种是在Activity内部方法中调用特定设置,另一种则是直接在Manifest文件中的application或activity标签中添加主题样式。

1. 解决EditText自动获得焦点的问题

定义act时添加: android:windowSoftInputMode="adjustUnspecified|stateHidden"

 

2. 使用Activity实现dialog效果

定义act时添加: android:theme="@android:style/Theme.Dialog"

 

3.使用继承自Application的类作为全局变量时,需在Mainfest中的application标签中声明

public class InfoClass extends Application{}

 

 <application android:name =".InfoClass" android:icon="@drawable/icon" android:label="@string/app_name">

 

4.隐藏标题栏和状态栏

一个是在Activity的setContextView()方法之前调用

 

//隐藏标题栏   

this.requestWindowFeature(Window.FEATURE_NO_TITLE);  

  //隐藏状态栏   

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  

还有一种是修改AndroidManifest.xml 。

无标题栏-----在application 标签或activity标签中添加android:theme="@android:style/Theme.NoTitleBar"

无标题栏和状态栏-----application 标签或activity标签中添加android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

 

那么现在MapFragment的代码如下:package com.example.bus.ui.map; import android.Manifest; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; import com.amap.api.maps.AMap; import com.amap.api.maps.model.LatLng; import com.example.bus.databinding.FragmentMapBinding; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.MapView; import com.google.android.gms.maps.UiSettings; public class MapFragment extends Fragment { private FragmentMapBinding binding; private MapView mapView; // 高德地图视图 private AMap aMap; // 地图控制器 private static final int LOCATION_PERMISSION_REQUEST_CODE = 1002; @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 初始化 ViewModel 和 ViewBinding MapViewModel mapViewModel = new ViewModelProvider(this).get(MapViewModel.class); binding = FragmentMapBinding.inflate(inflater, container, false); View root = binding.getRoot(); //绑定 MapView mapView = root.findViewById(R.id.map_view); mapView.onCreate(savedInstanceState); // 必须调用生命周期方法 // 初始化地图 initMap(); // 观察 LiveData final TextView textView = binding.textMap; mapViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); return root; } /** * 初始化地图 */ private void initMap() { if (aMap == null) { aMap = mapView.getMap(); UiSettings uiSettings = aMap.getUiSettings(); uiSettings.setZoomControlsEnabled(true); // 显示缩放按钮 uiSettings.setCompassEnabled(true); // 显示指南针 uiSettings.setMyLocationButtonEnabled(false); // 我们自己控制定位行为 } } @Override public void onResume() { super.onResume(); //每次恢复可见时都检查权限状态 mapView.onResume(); checkLocationPermissionAndAct(); } @Override public void onPause() { super.onPause(); mapView.onPause(); } @Override public void onDestroyView() { super.onDestroyView(); if (mapView != null) { mapView.onDestroy(); } binding = null; } @Override public void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == LOCATION_PERMISSION_REQUEST_CODE) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(requireContext(), "已获得精确定位权限", Toast.LENGTH_SHORT).show(); onLocationPermissionGranted(); } else { Toast.makeText(requireContext(), "无法获取位置信息,请手动开启权限", Toast.LENGTH_LONG).show(); binding.textMap.setText("❌ 定位权限被拒绝"); } } } /** * 权限通过后的回调:开启定位并移动到当前城市 */ private void onLocationPermissionGranted() { if (aMap != null) { // 启用定位层 if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { aMap.setMyLocationEnabled(true); // 可选:移动到某个默认位置(如北京) LatLng beijing = new LatLng(39.909186, 116.397411); aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(beijing, 12f)); binding.textMap.setText("📍 地图已加载,正在准备定位..."); } } } /** * 统一入口:检查定位权限并做出相应行为 */ private void checkLocationPermissionAndAct() { if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { onLocationPermissionGranted(); } else if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { //可选:支持模糊定位模式 onLocationPermissionGranted(); binding.textMap.setText("📶 使用大致位置中..."); } else { requestLocationPermission(); } } /** * 主动请求定位权限 */ private void requestLocationPermission() { if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) { Toast.makeText(requireContext(), "需要定位权限以显示附近公交站", Toast.LENGTH_LONG).show(); } requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE); } } fragment_map.xml的代码如下:<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.map.MapFragment"> <!-- 🗺️ 地图视图:占据顶部大部分区域 --> <com.amap.api.maps.MapView android:id="@+id/map_view" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/map_input1" app:layout_constraintVertical_weight="7" /> <TextView android:id="@+id/text_map" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:textAlignment="center" android:textSize="11sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.85" /> <!-- 起点输入框 --> <EditText android:id="@+id/map_input1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="请输入起点" android:minHeight="48dp" android:textSize="16sp" android:layout_marginLeft="10dp" android:layout_marginRight="110dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0" /> <!-- 终点输入框 --> <EditText android:id="@+id/map_input2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="110dp" android:hint="请输入终点" android:minHeight="48dp" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.008" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.07" /> <Button android:id="@+id/map_search" android:layout_width="wrap_content" android:layout_height="80dp" android:text="搜索" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.95" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.01" /> </androidx.constraintlayout.widget.ConstraintLayout>现在出现报错:错误: 程序包R不存在、错误: 找不到符号 符号: 方法 getMap() 位置: 类型为MapView的变量 mapView、错误: 不兼容的类型: com.amap.api.maps.UiSettings无法转换为com.google.android.gms.maps.UiSettings、错误: 不兼容的类型: com.amap.api.maps.model.LatLng无法转换为com.google.android.gms.maps.model.LatLng
最新发布
10-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值