在api 11下的操作栏中显示应用程序图标

时间:2015-01-19 17:09:31

标签: android android-actionbar icons

我正在编写简单的教程应用程序,由于某些原因我的应用程序图标没有显示(我想用它作为导航向上按钮而不是箭头)。

正如在主题中所述,我想在Api级别11上进行,但是我发现的所有解决方案都依赖于setIcon方法。

getActionBar().setIcon(R.drawable.ic_launcher); //only on API >= 14

Android studio 1.0.2中的片段预览确实显示了图标,但是模拟器没有,所以我希望资源是可以的。此外,搜索和删除图标就像一个魅力。我已经尝试将它设置为Icon和徽标都无济于事。

的AndroidManifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yamba"
    android:versionCode="1"
    android:versionName="1.0"
    >

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="21"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.AppCompat.Light"
        android:logo="@drawable/ic_launcher"
         >
        <activity
            android:parentActivityName=".MainActivity"
            android:name=".StatusActivity"
            android:label="@string/app_name" >
        </activity>
        <!--- The labe is what's displayed at the taskbar!-->
        <activity
            android:parentActivityName=".MainActivity"
            android:name=".SettingsActivity"
            android:label="@string/title_activity_settings" >
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

activity_settings.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"

    tools:context="com.example.yamba.SettingsActivity">

    <TextView android:text=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

menu_settings.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.yamba.SettingsActivity">
    <item android:id="@+id/action_settings" android:title="@string/action_settings"
        android:orderInCategory="100" app:showAsAction="never" />
</menu>

SettingsActivity.java

package com.example.yamba;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class SettingsActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null){
            SettingsFragment fragment = new SettingsFragment();
            getFragmentManager().beginTransaction().add(android.R.id.content, fragment, fragment.getClass().getSimpleName()).commit();
            setContentView(R.layout.activity_settings);
//            getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
//            only for API>=14
//            getActionBar().setDisplayShowHomeEnabled(true);
//            getActionBar().setIcon(R.drawable.ic_launcher);
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
//        getMenuInflater().inflate(R.menu.menu_settings, menu);
//        return true;
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        switch(id){
            case R.id.action_settings:
                startActivity(new Intent(this, SettingsActivity.class));
                return true;
            case R.id.action_tweet:
                startActivity(new Intent(this, com.example.yamba.StatusActivity.class));
                return true;
            default:
                return false;
        }
    }
}

SettingsFragment.java

package com.example.yamba;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;

/**
 * Created by me on 19-01-2015.
 */
public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {

    private SharedPreferences prefs;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }
    public void onStart(){
        super.onStart();
        prefs= PreferenceManager.getDefaultSharedPreferences(getActivity());
        prefs.registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

    }
}

我偶然发现我可能能够根据现有样式之一定义自定义样式,但无法弄清楚如何处理它。

如果您需要任何其他文件,请告诉我并感谢您的时间。

1 个答案:

答案 0 :(得分:1)

因为它是API 11 .. 你尝试使用支持库吗? 尝试切换

getActionBar().setIcon(R.drawable.ic_launcher);

with:

getSupportActionBar().setIcon(R.drawable.ic_launcher);

告诉我它是否有效,我们会从那里继续:)

相关问题