2

ActionBar のカスタム ビューを設定しましたが、homeAsUp を有効にしたいと考えています。すべてが機能し、Up インジケータはクリック可能です。ここで、カスタム ビューもクリックおよびタッチ可能にしたいと考えています (通常のアプリ アイコンのように)。そこで、カスタムビューにも押された状態(ホバー)効果を適用したいと思います。アップ インジケーターとカスタム ビューが 1 つの領域として表示されるのが理想的です。したがって、アップインジケーターをクリック/タッチすると、カスタムビューもセレクターを変更する必要があり、その逆も同様です。それを行う簡単な方法はありますか?

ところで:ActionBarDrawerToggleを使用しているため、アプリインジケーターをActionBarカスタムビューの一部にすることはできません...

4

2 に答える 2

0

まず、要件に応じて機能を定義するために、カスタム アクション バーのレイアウトを作成する必要があります。ここにxmlファイルがあります...

カスタム アクション バーのレイアウト:

    <ImageView
        android:id="@+id/custom_actionbar_back_iv"
        android:layout_width="@dimen/small_margin_ar"
        android:layout_height="@dimen/very_small_margin_ar"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/up_navigation"/>

    <TextView
        android:id="@+id/custom_actionbar_titleText_tv"
        style="@style/wrapscreen"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/custom_actionbar_back_iv"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/white"
        android:textSize="@dimen/above_medium_text_size" />

    <ImageButton
        android:id="@+id/custom_actionbar_goToArchiveActivity_ib"
        style="@style/wrapscreen"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="@dimen/medium_margin"
        android:background="@null"
        android:src="@drawable/ic_action_overflow" />

</RelativeLayout>

これが実装です..

onCreate() メソッドに setupactionBar() メソッドを定義する

    private void setUpActionBar() {
            ActionBar actionBar = getActionBar();
            actionBar.setDisplayShowHomeEnabled(false);
            actionBar.setDisplayShowTitleEnabled(false);

            LayoutInflater layoutInflater = LayoutInflater.from(this);
            View customActionBarView = layoutInflater.inflate(R.layout.custom_actionbar, null);

            // this view is used to show tile
            TextView ActivityTitleTV = (TextView) customActionBarView.findViewById(R.id.custom_actionbar_titleText_tv);
            ActivityTitleTV.setText(R.string.title_text_archive);

            //this view can be used for back navigation
            ImageView backToRecorderIV = (ImageView) customActionBarView.findViewById(R.id.custom_actionbar_back_iv);
            backToRecorderIV.setVisibility(View.VISIBLE);
            backToRecorderIV.setOnClickListener(this);

            //Another view which has up navigation
            ImageButton goToArchiveActivityIB = (ImageButton) customActionBarView.findViewById(R.id.custom_actionbar_goToArchiveActivity_ib);
            goToArchiveActivityIB.setVisibility(View.GONE);

            actionBar.setCustomView(customActionBarView);
            actionBar.setDisplayShowCustomEnabled(true);
        }

        //listener for back navigation
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.custom_actionbar_back_iv:
                    Intent recorder = new Intent(ArchiveActivity.this, RecorderActivity.class);
                    startActivity(recorder);
                    finish();
                    break;
            }
        }

お役に立てれば...

于 2015-05-11T11:32:27.157 に答える