【问题标题】:Android toolbar back arrow not clickableAndroid工具栏后退箭头不可点击
【发布时间】:2017-11-23 12:52:20
【问题描述】:

我已经尝试了一切来尝试让我的后退箭头在我的工具栏上工作,但我没有成功我已经尝试覆盖 onOptionsItemSelected 我还尝试了有关此线程的建议Up Navigation (Action Bar's back arrow) is not working for fragments 并没有成功。我也在处理片段。

注册活动

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {

private Toolbar toolbar;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_register);
    ButterKnife.bind(this);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case ( R.id.button_accept_tos ) :
            /*
            Fragment inputUserFragment = new AcceptAgreementFragment();
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
            transaction.replace(R.id.main_activity, inputUserFragment);
            transaction.addToBackStack(null);
            transaction.commit();
            */
            break;
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

清单

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".activity.MainActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".activity.RegisterActivity"
        android:windowSoftInputMode="adjustPan|adjustResize"
        android:screenOrientation="portrait">
    </activity>

    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".activity.MainActivity"
        />

</application>

和我的 activity_register xml

    <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/ghostWhiteColor"
    android:fitsSystemWindows="true"
    tools:context="com.dae.market.dav.lux.activity.RegisterActivity">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:minHeight="?attr/actionBarSize"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:titleTextColor="@android:color/white"
        app:navigationIcon="@drawable/ic_arrow_back_white_24dp"
        android:background="?attr/colorPrimary">

        <TextView
            android:id="@+id/toolbar_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test"
            android:textColor="@android:color/white"
            style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
            android:layout_gravity="center"
            />

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



    <!--wizard>-->
    <FrameLayout
        android:id="@+id/fragment_register"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</android.support.design.widget.CoordinatorLayout>

【问题讨论】:

  • 你的onClick 方法是否被调用过? (猜测注释掉的是调试)
  • @Phix 是的,它被调用了
  • @user8924538 你解决了吗...?
  • @user8924538 您是否覆盖了onBackPressed 并删除了super.onBackPressed();?如果你这样做了,这将不起作用

标签: android android-layout


【解决方案1】:

试试这个...

在你的活动中使用这个主题(清单)

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

在你的活动中

Toolbar toolbar;

//onCreate

toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

然后为工具栏调用 setNavigationOnClickListener

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });

现在检查 onClick on Back 按钮...

【讨论】:

    【解决方案2】:

    将此添加到您的清单活动中

    android:theme="@style/AppTheme.NoActionBar">
    

    你的样式文件一定是这样的

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    
    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
    

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多