【问题标题】:Actionbar replaced with Toolbar showing Logo at Top left with App name ... workaround操作栏替换为工具栏,在左上角显示带有应用程序名称的徽标...解决方法
【发布时间】:2018-02-22 09:18:45
【问题描述】:

如标题中所述,我希望我的 Android 应用程序会在左侧显示带有徽标的操作栏/工具栏,然后是标题形式的应用程序名称。 我必须在每个活动中执行一些解决方法,以省略在 Android 清单中设计为标签的文本。 下面我提供代码 sn-ps 以供快速参考 -

activity_main.xml ... 工具栏标签 -

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    android:minHeight="?attr/actionBarSize">

    <ImageView android:id="@+id/myLogo"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/logo"
        android:padding="4dp"
        android:adjustViewBounds="true"/>

    <TextView android:id="@+id/myTitle"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="My App name"/>

</android.support.v7.widget.Toolbar>

Android 清单 - 应用程序标签 -

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="My App name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

Styles.xml - 处理无操作栏

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

AppCompatActivity 的 onCreate -

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setTitle("");

        setContentView(R.layout.activity_main_horizontal);

        Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
        TextView titleText = (TextView) findViewById(R.id.myTitle);
        titleText.setTextColor(Color.WHITE);
        setSupportActionBar(toolbar);

    }

现在,从 onCreate,如果我删除或评论 - setTitle(""); 然后 ... 输出工具栏以从 Android 清单中选取的标签开始,然后是 Logo,然后是指示 App 名称的 TextView 文本。

如果我将 Android 清单中的标签设为空白,则手机中生成的应用启动器名称为空白。

通过换行 - setTitle(""); 我认为这是一种解决方法。有什么优雅的方法,我可以在工具栏中省略 Android 清单中的标签吗?

【问题讨论】:

    标签: android android-actionbar


    【解决方案1】:

    你必须这样做,所以你可以做你的自定义标题

        getSupportActionBar().setDisplayShowTitleEnabled(false);
    

    然后手动 setText 到你的 textView 里面的工具栏

    如果你坚持从清单中获取标题,你可以这样做

    ActivityInfo activityInfo = getPackageManager().getActivityInfo(
                    getComponentName(), PackageManager.GET_META_DATA);
    String title = activityInfo.loadLabel(getPackageManager())
                    .toString();
    

    【讨论】:

    • 在-getSupportActionBar().setDisplayShowTitleEnabled(false)处遇到空指针异常;这主要是因为我通过清单设置了无操作栏。
    • 在 'setSupportActionBar(toolbar);' 之后执行此操作
    • 感谢这工作。我也看到你的方法更优雅。
    • 如果这个有用和帮助,请接受答案并放弃投票,干杯~
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多