2015-12-28 40 views
3

我正在嘗試使用AppCompatActivity使應用程序的徽標可點擊。該徽標位於工具欄的原始位置並左對齊。徽標顯示正確,但徽標不可點擊。我在這裏錯過了什麼?Android:Home徽標無法點擊?

Activity.java:

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    assert getSupportActionBar() != null; 
    getSupportActionBar().setDisplayShowTitleEnabled(false); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setLogo(R.drawable.ic_s_logo_48x48); 
    getSupportActionBar().setDisplayUseLogoEnabled(true); 
} 

@Override 
public boolean onOptionsItemSelected (MenuItem item){ 
     switch (item.getItemId()) { 
     case R.id.home: 
      Toast toast1 = Toast.makeText(MainActivity.this, "This is the homepage", Toast.LENGTH_LONG); 
      toast1.setGravity(Gravity.CENTER_VERTICAL,0,0); 
      toast1.show(); 
      return true;    
     default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

toolbar.xml:

<android.support.v7.widget.Toolbar 

xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/toolbar" 
android:layout_width="match_parent" 
android:layout_height="?attr/actionBarSize" 
android:background="?attr/colorPrimary" 
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/home" 
    android:title="@string/action_logo" 
    android:contentDescription="@string/action_logo" 
    android:icon="@drawable/ic_s_logo_48x48" 
    android:gravity="start" 
    android:clickable="true" 
    app:showAsAction="always" /> 

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

回答

3

您可以用另一種方式來處理你的家ImageButton點擊這樣

ImageButton ivHome = (ImageButton) toolbar.findViewById(R.id.home); 

ivHome.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        Log("TAG","Home image click"); 
      } 
}); 

=== =

您可以使用setNavigationIcon爲您Toolbar(會顯示如下您目前的家庭按鈕)
要做到這一點

1.創建工具欄這樣的XML

<android.support.v7.widget.Toolbar 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/toolbar" 
android:layout_width="match_parent" 
android:layout_height="?attr/actionBarSize" 
android:background="?attr/colorPrimary" 
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
</android.support.v7.widget.Toolbar> 

2.Change工具欄導航在你的圖標Activity

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.your_home_icon));  

3.手樂事件單擊

toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Log.d("TAG", "home clicked"); 
    } 
}); 

希望的時候,這種幫助

+0

謝謝,我會盡力的。我是否正確地假設我可以爲TouchListener使用類似的代碼? – AJW

+0

是的,我確實這麼認爲 –

+0

我試過你推薦的代碼,不幸的是它沒有工作。該圖標似乎被凍結,因爲它不能接受點擊。當點擊溢出圖標時,瞬間出現灰色陰影以顯示圖標已被點擊。當我點擊主頁圖標時,沒有任何反應。有什麼想法嗎? – AJW