【问题标题】:Android: Home logo not clickable?Android:主页徽标不可点击?
【发布时间】:2015-12-28 02:45:59
【问题描述】:

我正在尝试使用 AppCompatActivity 使应用程序的徽标可点击。徽标位于工具栏的主位置并左对齐。徽标显示正确,但徽标不可点击。我在这里错过了什么?

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);
     }
}

工具栏.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>   

【问题讨论】:

    标签: android android-toolbar android-homebutton


    【解决方案1】:

    你可以用其他方式来处理你家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.更改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");
         }
    });
    

    希望有帮助

    【讨论】:

    • 谢谢,我会试试的。我是否正确地假设我可以为 TouchListener 使用类似的代码?
    • 我尝试了您推荐的代码,但不幸的是它不起作用。该图标似乎被冻结,就像它没有启用接受点击一样。单击溢出图标时,会立即出现一个灰色阴影,表明该图标已被单击。当我单击主页图标时,没有任何反应。有什么想法吗?
    • 在onClick里面,你应该添加一些logcat来检查,也许Toast会导致问题。然后告诉我定位显示与否
    • 我在 onClick 部分用 Intent 替换了 Toast,但仍然没有运气。
    • 您能否将您的ImageView 更改为ButtonImageButton。可以轻松处理点击事件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多