반응형
Android 툴바 메뉴 / 아이콘을 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>
반응형
'code' 카테고리의 다른 글
@ConditionalOnProperty 주석의 목적은 무엇입니까? (0) | 2021.01.07 |
---|---|
항목의 액세스 인덱스에 대한 Aurelia repeat. (0) | 2021.01.07 |
오류 : "%> %"함수를 찾을 수 없습니다. (0) | 2021.01.07 |
Oracle Database에서 "SET DEFINE OFF"를 사용하는시기 또는 이유 (0) | 2021.01.07 |
병합 커밋없이 git 로그보기 (0) | 2021.01.07 |