Zba*_*ian 249 xml android android-actionbar-compat
我正在使用自定义操作栏视图,如下面的屏幕截图所示,操作栏中有一个空白的灰色空间.我想删除它.
我做了什么:
RES /值-V11/styles.xml
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)
RES /值/ my_custom_actionbar.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:height">60dp</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
表现
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/AppName"
android:theme="@style/AppBaseTheme" >
<!-- activities... etc -->
</application>
Run Code Online (Sandbox Code Playgroud)
主要活动
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
ActionBar actionbar = getSupportActionBar();
actionbar.setDefaultDisplayHomeAsUpEnabled(false);
actionbar.setDisplayHomeAsUpEnabled(false);
actionbar.setDisplayShowCustomEnabled(true);
actionbar.setDisplayShowHomeEnabled(false);
actionbar.setDisplayShowTitleEnabled(false);
actionbar.setDisplayUseLogoEnabled(false);
actionbar.setHomeButtonEnabled(false);
// Add the custom layout
View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
actionbar.setCustomView(view);
}
Run Code Online (Sandbox Code Playgroud)
我发现了一篇最近的帖子,指出最新版本存在问题.我还将ADT和SDK更新到Android 5.
我不知道该怎么办.
编辑(部分解决方案):
不适用于Android <= API 10.
Android Lollipop,AppCompat ActionBar自定义视图不占用整个屏幕宽度
我改变了什么:
使用最新的sdk版本:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Run Code Online (Sandbox Code Playgroud)
添加一个toolbarStyle
:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
<item name="android:toolbarStyle">@style/ToolbarStyle</item>
<item name="toolbarStyle">@style/ToolbarStyle</item>
</style>
<style name="ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
<item name="contentInsetStart">0dp</item>
<item name="android:contentInsetStart">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
Luk*_*ner 574
如果要添加Toolbar
via XML,则只需添加XML属性即可删除内容插入.
<android.support.v7.widget.Toolbar
xmlns:app="schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryColor"
android:contentInsetLeft="0dp"
android:contentInsetStart="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
android:contentInsetRight="0dp"
android:contentInsetEnd="0dp"
app:contentInsetRight="0dp"
app:contentInsetEnd="0dp" />
Run Code Online (Sandbox Code Playgroud)
小智 193
试试这个:
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
View customView = getLayoutInflater().inflate(R.layout.main_action_bar, null);
actionBar.setCustomView(customView);
Toolbar parent =(Toolbar) customView.getParent();
parent.setPadding(0,0,0,0);//for tab otherwise give space in tab
parent.setContentInsetsAbsolute(0,0);
Run Code Online (Sandbox Code Playgroud)
我在我的项目中使用了这段代码,祝你好运;
Nav*_*r M 40
左侧插图是由工具栏引起的contentInsetStart
,默认情况下为16dp.
将其更改为与keyline对齐.
支持库v24.0.0的更新:
为匹配Material Design规范,还有一个附加属性contentInsetStartWithNavigation
,默认为16dp.如果您还有导航图标,请更改此项.
事实证明,这是设计库第24版中引入的新材料设计规范的一部分.
https://material.google.com/patterns/navigation.html
但是,可以通过向Toolbar小部件添加以下属性来删除额外空间.
app:contentInsetStartWithNavigation="0dp"
Run Code Online (Sandbox Code Playgroud)
mad*_*527 25
我找到了另一个更改toolbarStyle的解决方案(参考appcompat-v7),代码如下:
<item name="toolbarStyle">@style/Widget.Toolbar</item>
<style name="Widget.Toolbar" parent="@style/Widget.AppCompat.Toolbar">
<item name="contentInsetStart">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
Pra*_*ash 14
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
android:paddingLeft="0dp">
Run Code Online (Sandbox Code Playgroud)
这应该足够好了.
Nil*_*nta 10
只需修改styles.xml即可
<!-- ActionBar styles -->
<style name="MyActionBar" parent="Widget.AppCompat.ActionBar">
<item name="contentInsetStart">0dp</item>
<item name="contentInsetEnd">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
您可以设置自定义视图,而不是在布局中添加工具栏,如下所示.
Toolbar parent = (Toolbar) customView.getParent();
parent.setContentInsetsAbsolute(0,0);
Run Code Online (Sandbox Code Playgroud)
仅添加app:contentInsetStart="0dp"
到工具栏中删除该左侧空间.
所以你的工具栏定义是这样的
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:contentInsetStart="0dp"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
Run Code Online (Sandbox Code Playgroud)
它看起来像这样
如果你查看工具栏的文档,默认情况下它已经定义了样式,并且有一个项目 contentInsetStart。
<item name="contentInsetStart">16dp</item>
Run Code Online (Sandbox Code Playgroud)
如果您想覆盖此填充,可以通过两种方式完成。
1.覆盖样式并使用 contentInsetStart 和 contentInsetEnd 值添加您自己的样式
<style name="MyActionBar" parent="Widget.AppCompat.ActionBar">
<item name="contentInsetStart">0dp</item>
<item name="contentInsetEnd">0dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
2.在XML中您可以直接定义contentInsetStart和contentInsetEnd值
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
android:layout_height="?attr/actionBarSize">
<!--Add your views here-->
</androidx.appcompat.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)
使用AppCompatAcitivty
你可以使用
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
View logo = getLayoutInflater().inflate(R.layout.custom_toolbar, null);
mToolbar.addView(logo, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mToolbar.setContentInsetsAbsolute(0,0);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
103388 次 |
最近记录: |