2014-10-29 44 views
1

也許這是一個非常基本的問題,但我搜索了很多,didn't發現爲什麼這isn't工作的說明...動作條圖標SDK21

什麼我正嘗試做的是顯示我的應用程序圖標在左側的操作欄上,沒有使用自定義視圖,也沒有啓用它作爲向上按鈕...

我試過setIcon,setLogo,他們都不工作... 我記得顯示圖標是默認行爲前一段時間...

這是我的build.gradle和我的MainActivity。

謝謝!

的build.gradle

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.12.2' 
    } 
} 
apply plugin: 'com.android.application' 

repositories { 
    jcenter() 
} 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.0.2" 

    defaultConfig { 
     applicationId "br.com.example.myapplication2.app" 
     minSdkVersion 9 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.0' 
} 

MainActivity

package br.com.example.myapplication2.app; 

import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.ActionBar; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.os.Build; 


public class MainActivity extends ActionBarActivity { 

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

     setContentView(R.layout.activity_main); 
     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()) 
        .commit(); 
     } 

     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setTitle("My Profile"); 
     actionBar.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.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(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
      return rootView; 
     } 
    } 
} 

回答

1

Toolbar documentation

  • 標題和副標題。標題應該是導航層次結構中工具欄當前位置的路標以及其中包含的內容。字幕(如果存在)應指示關於當前內容的任何擴展信息。 如果應用程序使用徽標圖片,應該強烈考慮忽略標題和副標題。

在現代的Android用戶界面中,開發人員應該更多地依賴工具欄視覺上不同的顏色方案,而不是他們的應用程序圖標。應用程序圖標和標題作爲標準佈局的使用在API 21設備和更新版本上是不鼓勵的。

但是,如果你想要一個應用程序圖標,setLogo()確實是正確的方法。

+0

Hello @ianhanniballake。我試圖使用actionBar.setLogo(R.drawable.ic_launcher),但它仍然沒有顯示圖標...任何其他的建議? 只是爲了澄清:我正在談論出現在左側操作欄上的圖標,好嗎?這個圖像上標有#1的那個:http://developer.android.com/images/ui/[email protected] – regisxp 2014-10-30 00:31:48

+0

既不適合我... – 2014-11-23 01:02:25

1

今天看着這個,在閱讀ianhanniballake的帖子之前。花了我幾個小時來找出爲什麼我的一些應用程序顯示這個圖標,但其他人沒有。

答案:用com.android.support:appcompat-v7:20.0.0替換com.android.support:appcompat-v7:21.0.2(或其他支持appcompat的東西)。

爲Android Studio中這樣做: 按f4 轉到依賴

刪除21.0.2或任何你正在使用。

單擊添加 - 選擇21.0.2,只需重命名文本7:20.0.0(或只輸入完整的包名稱)。

正如ianhanniballake提到的。該圖標不再推薦。然而,奇怪的是,標準軟件包仍然使用它,而appcompats似乎默認關閉它...

+0

你知道如何在eclipse中做到這一點嗎? – 2014-11-23 00:57:37

+0

依賴關係編譯fileTree(dir:'libs',include:['* .jar']) compile'c​​om.android.support:appcompat-v7:21.0.0' } - 我想象你改變行這裏包括7:20.0.0。確保您安裝了正確的支持庫。如前所述,請務必查看Google提供的最新建議。如果你在SDK中安裝了演示程序,有一些很好的例子。 – David 2014-11-24 02:49:18