私は同様の質問をしました ここ ...私は答えの中にいくつかのチュートリアルを得ました。しかし、この質問はdiffrenetです。その方法はどれも私のプロジェクトでは機能しないからです。
すべてのアイコンをツールバーの中央に配置したい
私はすべての利用可能な方法をテストします...しかし常にアイコンは左側に浮かんでいます。
アイコンを中央揃えにしたい(左のアイコンが左に浮き、右のアイコンが右に浮き、他のアイコンが中央に浮くようにする)
Activity.Main.xml
<LinearLayout 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"
Android:orientation="vertical" // I add vertical
tools:context=".MainActivity">
<include
Android:id="@+id/tool_bar"
layout="@layout/tool_bar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent" // I add match_parent
Android:layout_gravity="center" /> // I add center
</LinearLayout>.
tool_bar.xmlにもあります
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
Android:layout_height="wrap_content"
Android:layout_height="match_parent"
Android:background="@color/ColorPrimary"
Android:elevation="2dp"
Android:theme="@style/Base.ThemeOverlay.AppCompat.Dark"
Android:layout_gravity="center" // I add center
xmlns:Android="http://schemas.Android.com/apk/res/Android" />
main_menu.xml内
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools" tools:context=".MainActivity">
<item
Android:id="@+id/action_forward"
Android:title="forward"
Android:icon="@drawable/ic_action_arrow_forward"
app:showAsAction="always"
></item>
<item
Android:id="@+id/action_zoom_in"
Android:title="zoom in"
Android:icon="@drawable/ic_action_zoom_in"
app:showAsAction="always"
></item>
<item ...
上記のコードの場合(main_menu.xml)in <item>
私はこれらすべてのコードを試しました:
Android:layout_width="match_parent"
Android:layout_weight=".2" // 20%
Android:gravity="center"
Android:layout_centerVertical="true"
Android:layout_centerHorizontal="true"
アイコンを揃えるために何ができるか分かりません。私は時間をグーグルで検索し、すべてのシナリオを試しました
何が悪いの?すべてのテストで、変化は見られません...
pic2が欲しかった前(上の写真)でも今は中央に配置したいだけです!
私のすべてのテストでは、写真1のみを取得します。変更はありません。
問題を修正し、お楽しみください:)
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:elevation="4dp"
Android:background="?attr/colorPrimary">
<!-- Code for your Left Button -->
<ImageView
Android:id="@+id/yourId"
Android:src="@mipmap/yourLeftIcon"
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:layout_marginLeft="20dp"
Android:layout_marginRight="20dp"
Android:layout_marginTop="4dp"
Android:layout_marginBottom="4dp"
Android:layout_gravity="left" />
<!-- Here is the main code for your Middle Buttons -->
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:orientation="horizontal"
Android:layout_gravity="center"
Android:gravity="center">
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button1"/>
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button2"/>
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button3"/>
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button4" />
</LinearLayout>
<!-- Code for your Right Button -->
<ImageView
Android:id="@+id/yourId"
Android:src="@mipmap/yourRightIcon"
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:layout_marginLeft="20dp"
Android:layout_marginRight="20dp"
Android:layout_marginTop="4dp"
Android:layout_marginBottom="4dp"
Android:layout_gravity="right" />
</Android.support.v7.widget.Toolbar>
ツールバーは他のビューと同じです。子を直接追加して、通常のビューと同じようにアクセスできます。
これはあなたの質問に対する正確な答えではありませんが、それはあなたに行く方法を教えてくれます。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@Android:color/holo_red_light"
Android:elevation="2dp"
Android:theme="@style/Base.ThemeOverlay.AppCompat.Dark">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button1"/>
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button2"/>
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button3"/>
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/ic_launcher"
Android:id="@+id/button4" />
</LinearLayout>
</Android.support.v7.widget.Toolbar>
次に、メインフラグメントまたは他の場所で、このようなものにアクセスできます。
Toolbar mToolbar = (Toolbar) root.findViewById(R.id.tool_bar);
Button button1 = (Button) mToolbar.findViewById(R.id.button1);
Button button2 = (Button) mToolbar.findViewById(R.id.button2);
Button button3 = (Button) mToolbar.findViewById(R.id.button3);
Button button4 = (Button) mToolbar.findViewById(R.id.button4);
この方法を使用して、任意の方法でカスタムツールバーを作成できます。おそらく相対レイアウトを使用することをお勧めします。
次のようにプログラムで行うことができます。
mToolbar.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ImageView imageView = (ImageView)mToolbar.findViewById(R.id.logo);
if( mToolbar == null ){
return;
}
int toolbarWidth = mToolbar.getWidth();
int imageWidth = imageView.getWidth();
imageView.setX((toolbarWidth-imageWidth)/2);
}
});
layout_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/toolbar"
style="@style/Toolbar"
Android:layout_width="match_parent"
Android:layout_height="@dimen/toolbar_height"
Android:background="@drawable/toolbar_background"
Android:focusable="false"
app:titleTextAppearance="@style/AppTheme.Toolbar.Title">
<ImageView
Android:id="@+id/logo"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/toolbar_logo"/>
</Android.support.v7.widget.Toolbar>
この解決策はひどいことは知っていますが、私にとってはうまくいきます。
まず、LinearLayoutでは、1つではなく3つのツールバーを配置できます。
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal">
<Android.support.v7.widget.Toolbar Android:id="@+id/bottomToolbarLeft"
Android:layout_width="0dp"
Android:layout_height="?attr/actionBarSize"
Android:layout_weight="1.0"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
<Android.support.v7.widget.Toolbar Android:id="@+id/bottomToolbarCenter"
Android:layout_width="wrap_content"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
<Android.support.v7.widget.Toolbar Android:id="@+id/bottomToolbarRight"
Android:layout_width="0dp"
Android:layout_height="?attr/actionBarSize"
Android:layout_weight="1.0"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</LinearLayout>
各ツールバーには、独自のメニューリソースが必要です。
次に、次のようになります。 アイコンは中央に配置されますが、左側のアイコンは左側の境界線に揃えられません
最後に、左側のアイコンを揃えるには、左側のツールバーに次のパラメータを設定するだけです。
Android:layoutDirection="rtl"
結果は次のとおりです。 目的の順序
おそらくあなたを助けます:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appBar"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:theme="@style/AppTheme.AppBarOverlay">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbarPath"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary">
<ImageView
Android:id="@+id/imgBack"
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:layout_gravity="left"
Android:layout_marginBottom="4dp"
Android:layout_marginLeft="20dp"
Android:layout_marginRight="20dp"
Android:layout_marginTop="4dp"
Android:src="@drawable/ic_action_back" />
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_gravity="center"
Android:gravity="center"
Android:orientation="horizontal">
<ImageView
Android:id="@+id/imgClear"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginRight="15dp"
Android:src="@drawable/ic_action_discard" />
<ImageView
Android:id="@+id/imgStop"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginRight="15dp"
Android:src="@drawable/ic_action_stop" />
<ImageView
Android:id="@+id/imgPath"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginRight="15dp"
Android:src="@drawable/ic_action_merge" />
<ImageView
Android:id="@+id/imgToggle"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="@drawable/ic_action_map" />
</LinearLayout>
<ImageView
Android:id="@+id/imgForward"
Android:layout_width="wrap_content"
Android:layout_height="fill_parent"
Android:layout_gravity="right"
Android:layout_marginBottom="4dp"
Android:layout_marginLeft="20dp"
Android:layout_marginRight="20dp"
Android:layout_marginTop="4dp"
Android:src="@drawable/ic_action_forward" />
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.AppBarLayout>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:id="@+id/mapPath"
Android:name="com.google.Android.gms.maps.SupportMapFragment"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_below="@+id/appBar" />
</RelativeLayout>
あなたのstyle.xml
書く :
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
次にmanifest.xml
:
<application
Android:name="com.ir.zanis.app.AppController"
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@style/AppTheme.NoActionBar"> <===See here===
.......
.............
.............
親のレイアウトには配置を適用してみてください。
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:gravity="center">
<Button ...any attributes.../>
...any items...
</LinerLayout>