2015-12-28 43 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