问题:

继承了AppCompatActivity的Activity无法通过调用requestWindowFeature(Window.FEATURE_NO_TITLE)来隐藏标题栏。

1
2
3
4
5
6
7
8
public class MainActivity extends AppCompatActivity {   
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //无效
setContentView(R.layout.activity_main);
}
}

既然这条路走不通,我就在AndroidManifest.xml将主题改为@android:style/Theme.NoTitleBar

1
2
3
4
5
<application    
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar"//运行出错
>

在Android Monitor中看到错误报告:You need to use a Theme.AppCompat theme (or descendant) with this activity.(你必须使用Theme.AppCompat主题或者其子类主题)

解决方法:

在AndroidManifest.xml中将主题更改为Theme.AppCompat.Light.NoActionBar、Theme.AppCompat.NoActionBar或Theme.AppCompat.DayNight.NoActionBar中的一个,即可隐藏标题栏

1
2
3
4
5
<application    
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"//成功隐藏标题栏
>

在activity中设置也可以

1
2
3
4
5
6
<activity
android:name=".CameraActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:configChanges="orientation|screenLayout|keyboardHidden"
android:hardwareAccelerated="true"
android:screenOrientation="portrait">

或者直接修改style.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

<style name="Theme.MainActivity" parent="AppTheme"/>
<style name="Theme.PreviewActivity" parent="Theme.AppCompat.NoActionBar"/>

</resources>
1
2
3
<activity android:name=".PicturePreviewActivity"

/>
Fork me on GitHub