(Android Studio) 自定义操作栏布局未填满整个操作栏
(Android Studio) Custom Action Bar Layout isnt filling whole action bar
在 setContentView() 之前
LayoutInflater inflater = (LayoutInflater) getSupportActionBar() .getThemedContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View customActionBarView = inflater.inflate(R.layout.ab, null);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions( ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setCustomView(customActionBarView, new android.support.v7.app.ActionBar.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
在ab.xml
在我的申请中
整数styles.xml
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
<style name="ATheme" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/AppTheme.ActionBar.a</item>
<item name="actionBarStyle">@style/AppTheme.ActionBar.a</item>>
<item name="android:icon">@android:color/transparent</item>
</style>
<style name="AppTheme.ActionBar.a" parent="Widget.AppCompat.Light.ActionBar">
<item name="android:height">50dp</item>
<item name="android:background">#d1d1d1</item>
</style>
在我的应用程序中,没有完全填充操作栏
答案是
像这样改变你的风格
<resources>
<!-- the theme applied to the application or activity -->
<style name="AppTheme"
parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="Widget.AppCompat.Toolbar">
<!-- Support library compatibility -->
<item name="contentInsetStart">0dp</item>
<!--<item name="background">@android:color/transparent</item>-->
</style>
</resources>
你的 ActionBar.xml 布局如下:
注意:如果您将 'android:layout_height="?attr/actionBarSize"' 更改为 'android:layout_height="match_parent"',它将不会填满整个操作栏宽度,如果您将 LinearLayout 更改为 RelativeLayout 'android:layout_height="match_parent"',操作栏将填满整个屏幕
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:gravity="center"
android:background="#0000FF"
android:layout_height="?attr/actionBarSize">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="#FFFFFF"
android:text="Aplication"
/>
</LinearLayout>
最后:
setContentView(R.layout.activity_main);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions( ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(R.layout.ab);
View customActionBarView = actionBar.getCustomView();
希望对您有所帮助。
在 setContentView() 之前
LayoutInflater inflater = (LayoutInflater) getSupportActionBar() .getThemedContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View customActionBarView = inflater.inflate(R.layout.ab, null);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions( ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setCustomView(customActionBarView, new android.support.v7.app.ActionBar.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
在ab.xml
在我的申请中
整数styles.xml
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
<style name="ATheme" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/AppTheme.ActionBar.a</item>
<item name="actionBarStyle">@style/AppTheme.ActionBar.a</item>>
<item name="android:icon">@android:color/transparent</item>
</style>
<style name="AppTheme.ActionBar.a" parent="Widget.AppCompat.Light.ActionBar">
<item name="android:height">50dp</item>
<item name="android:background">#d1d1d1</item>
</style>
在我的应用程序中,没有完全填充操作栏
答案是 像这样改变你的风格
<resources>
<!-- the theme applied to the application or activity -->
<style name="AppTheme"
parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar"
parent="Widget.AppCompat.Toolbar">
<!-- Support library compatibility -->
<item name="contentInsetStart">0dp</item>
<!--<item name="background">@android:color/transparent</item>-->
</style>
</resources>
你的 ActionBar.xml 布局如下: 注意:如果您将 'android:layout_height="?attr/actionBarSize"' 更改为 'android:layout_height="match_parent"',它将不会填满整个操作栏宽度,如果您将 LinearLayout 更改为 RelativeLayout 'android:layout_height="match_parent"',操作栏将填满整个屏幕
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:gravity="center"
android:background="#0000FF"
android:layout_height="?attr/actionBarSize">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="#FFFFFF"
android:text="Aplication"
/>
</LinearLayout>
最后:
setContentView(R.layout.activity_main);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions( ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(R.layout.ab);
View customActionBarView = actionBar.getCustomView();
希望对您有所帮助。