c# - 导航栏不够宽
问题描述
我有个问题。我使用以下代码创建了一个 menu_bar.axml:
<?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:layout_height="75dp"
android:weightSum="100"
android:background="#071c3f">
<LinearLayout
android:orientation="vertical"
android:layout_weight="15"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/StatusImageLayout"
android:clickable="false">
<ImageView
android:src="@drawable/disconnected"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px"
android:id="@+id/imgConnectionStatus"
android:foregroundGravity="center_horizontal"
android:layout_marginLeft="1dp" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="70"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/ProjectNameLayout" >
<TextView
android:text="Project Name"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px"
android:id="@+id/txtProjectName"
android:gravity="center"
android:textStyle="bold"
android:textSize="30dp"
android:textColor="#ffffffff"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="15"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/SettingsButtonLayout" >
<ImageView
android:src="@drawable/settings"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:minHeight="25px"
android:id="@+id/imgSettingsLogo"
android:foregroundGravity="center_horizontal"
android:layout_marginRight="1dp"/>
</LinearLayout>
</LinearLayout>
然后我创建了一个这样的自定义样式:
<resources>
<style name="MyAppTheme">
parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MenuBar</item>
</style>
<style name="MenuBar"
parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:height">75dp</item>
<item name="android:displayOptions"></item>
<item name="android:background">#00000000</item>
</style>
</resources>
最后在我的 MainActivity.cs 中,我将这些行设置在OnCreate()
ActionBar.SetCustomView(Resource.Layout.menu_bar);
ActionBar.SetDisplayShowCustomEnabled(true);
现在菜单栏像我想要的那样弹出(几乎),但是导航栏对于屏幕来说不够宽。我不知道它来自哪里,我不知道如何摆脱它。这是我的屏幕的链接:
任何想法如何解决这个问题或我做错了什么?
解决方案
您可以在操作栏中看到源代码 (由最近的 appcompat-v7 更新中对 ActionBar 的最新更改引起)
<style name="Base.Widget.AppCompat.Toolbar" parent="android:Widget">
<item name="titleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Title</item>
<item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item>
<item name="android:minHeight">?attr/actionBarSize</item>
<item name="titleMargins">4dp</item>
<item name="maxButtonHeight">56dp</item>
<item name="collapseIcon">?attr/homeAsUpIndicator</item>
<item name="collapseContentDescription">@string/abc_toolbar_collapse_description</item>
<item name="contentInsetStart">16dp</item>
</style>
<item name="contentInsetStart">16dp</item>
contentInsetStart 属性是导致自定义 ActionBar 未完全填充的原因
并且从Android L (API level 21)开始,action bar可以用应用布局中的任意Toolbar widget来表示,所以简单的解决方案如下:</p>
ActionBar.SetCustomView(Resource.Layout.menu_bar);
ActionBar.SetDisplayShowCustomEnabled(true);
((Toolbar)ActionBar.CustomView.Parent).SetContentInsetsAbsolute(0,0);//add this line to remove the left margin
推荐阅读
- android - onScrollBeginDrag 在 Android 上可用吗?
- java - BEEWARE:任务“:transformClassesWithDexBuilderForDebug”执行失败
- html - 滑块没有响应并在其下方的部分中创建额外的高度
- python - Python-Selenium 爬虫冻结,尤其是在无头模式下(不可重现的错误)
- java - 如何修复:我的 Web 应用程序强制所有用户与同一个列表“交互”,而不是为每个用户提供自己的列表
- node.js - 通过 http put 请求访问对象中的数据
- c# - 无法从“字符串”转换为“对象”
- amazon-web-services - 当我们从 s3 触发 lambda 函数时。如何获取是否触发了 lambda 的日志。我想用 terraform 做到这一点
- javascript - 从 node_modules 中构建依赖包
- highcharts - 如何在实心仪表图上绘制绘图线