code

Android 툴바 메뉴 / 아이콘을 Google지도 앱 에서처럼 왼쪽에 정렬하려면 어떻게해야합니까?

codestyles 2021. 1. 7. 08:01
반응형

Android 툴바 메뉴 / 아이콘을 Google지도 앱 에서처럼 왼쪽에 정렬하려면 어떻게해야합니까?


다음은 Google지도 툴바의 스크린 샷입니다.

Google지도 툴바

보시다시피 아이콘은 오른쪽이 아닌 왼쪽에 정렬됩니다 (기본 동작). 도구 모음에 android : layout_gravity = "left"및 android : gravity = "left"를 추가하려고했지만 작동하지 않았습니다. 또한 내부 LinearLayout (동일한 중력 값)을 도구 모음에 추가하려고 시도했지만 작동하지 않았습니다. 어떤 아이디어? 모든 것을 처음부터 다시 만드는 대신 툴바 위젯과 함께 일반 Android 메뉴를 사용할 수 있기를 원합니다.


Android 툴바 코드를 고심하고 파헤친 후 작동하도록 관리했습니다. 기본적으로 새로운 android.support.v7.widget.ActionMenuView를 툴바의 자식으로 추가하고 그 중력을 top | start로 설정 한 다음 액티비티의 해당 액션 메뉴보기에 메뉴를 추가하는 것이 아이디어입니다. 다음은 코드입니다.

my_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/tToolbar"
    android:layout_height="?attr/actionBarSize"
    android:layout_width="match_parent"
    android:background="?attr/colorPrimary"
    android:gravity="center_vertical|start"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <android.support.v7.widget.ActionMenuView
        android:id="@+id/amvMenu"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"/>
</android.support.v7.widget.Toolbar>

my_activity.xml

<RelativeLayout 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">

    <!--Toolbar-->
    <include
        android:id="@+id/tToolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        layout="@layout/my_toolbar" />
</RelativeLayout>

MyActivity.java

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.ActionMenuView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public final class MyActivity extends ActionBarActivity {
  private ActionMenuView amvMenu;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // this layout includes the custom toolbar my_toolbar.xml
    setContentView(R.layout.my_activity);

    Toolbar t = (Toolbar) findViewById(R.id.tToolbar);
    amvMenu = (ActionMenuView) t.findViewById(R.id.amvMenu);
    amvMenu.setOnMenuItemClickListener(new ActionMenuView.OnMenuItemClickListener() {
      @Override
      public boolean onMenuItemClick(MenuItem menuItem) {
        return onOptionsItemSelected(menuItem);
      }
    });

    setSupportActionBar(t);
    getSupportActionBar().setTitle(null);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    // use amvMenu here
    inflater.inflate(R.menu.my_activity_menu, amvMenu.getMenu());
    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    // Do your actions here
    return true;
  }
}

도구 모음 항목을 메뉴 작업으로 추가해야하는 특별한 이유가없는 경우 UI 컨트롤을 도구 모음에 직접 추가하고 레이아웃 내에서 다른 항목을 정렬하는 것과 유사하게 정렬 할 수 있습니다.

예를 들어, 다음 툴바에는 왼쪽 정렬 Spinner과 오른쪽 정렬 EditText가 있습니다.

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar_actionbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/tab_background"
    android:gravity="center_vertical">

    <Spinner
        android:id="@+id/categorySpinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:hint="Name" />

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

참조 URL : https://stackoverflow.com/questions/29807744/how-can-i-align-android-toolbar-menu-icons-to-the-left-like-in-google-maps-app

반응형