2017-06-13 1 views
0

Je souhaite avoir une icône de menu dans la barre d'outils, lorsque vous cliquez sur cette icône de menu et que vous passez à l'icône de la case à cocher.Menu de la barre d'outils Android actionViewClass ou actionLayout ne peut pas être aligné correctement

Comme l'icône de recherche dans la barre d'outils. Lorsque vous cliquez sur le bouton du menu de recherche, affichez la recherche. Voici comment searchView est ajouté dans le menu.

donc je l'ai fait la même chose pour la case

app:actionViewClass="android.widget.CheckBox" 

Mais le ActionView est montré, il est d'aligner à gauche sur le bouton d'accueil vers le haut. Peut-être que c'est parce que checkbox est wrap_content. Mais je veux que ce soit aligné à droite à la fin de la vue parente. Donc, après avoir vérifié cela https://developer.android.com/training/appbar/action-views.html

Je pense que je peux utiliser le actionLayout. Alors je change comme ci-dessous:

<item android:id="@+id/action_delete" 
      android:title="delete" 
      android:icon="@drawable/ic_action_delete" 
      app:showAsAction="always|collapseActionView" 
      app:actionLayout="@layout/toolbar_checkbox_layout" /> 

toolbar_check_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/transparent"> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="Text" 
     android:gravity="center" 
     android:textColor="@color/colorAccent"/> 

    <android.support.v7.widget.AppCompatCheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:buttonTint="@color/colorAccent" 
     android:layout_gravity="end|center" 
     android:layout_marginEnd="15dp" 
     android:layout_marginRight="15dp" /> 

</LinearLayout> 

Le résultat est comme ça. Il ne peut toujours pas être bon alignement. Je veux que la case à cocher soit à droite de la barre d'outils. Toute suggestion? S'il vous plaît. Merci beaucoup enter image description here

Répondre

0

MainActivity.xml

<?xml version="1.0" encoding="utf-8"?> 
<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="wrap_content" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:background="#ffffff" 
tools:context="com.example.raj.jazzflurry.MainActivity"> 
<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/faqfoods_bar" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     app:popupTheme="@style/AppTheme.PopupOverlay" > 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_gravity="end" 
      android:layout_height="?attr/actionBarSize"> 
      <include 
       layout="@layout/btn_share" 
       android:id="@+id/btn_share" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
     </LinearLayout> 


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

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

btn_share.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizantal" android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Text" 
    android:layout_gravity="center" 
    android:textColor="@color/colorAccent"/> 

<android.support.v7.widget.AppCompatCheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:buttonTint="@color/colorAccent" 
    android:layout_gravity="center" /> 

</LinearLayout> 

fichier Java (intérieur sur la création)

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setTitle("Hai"); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setBackgroundDrawable(ContextCompat.getDrawable(this, R.color.colorprimary1)); 

Manifest.xml

<activity 
     android:name=".MainActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/Theme.AppCompat.NoActionBar"> 
+0

Je ne veux pas modifier ma barre d'outils comme ci-dessus. Je veux juste définir une classe de vue d'action ou une disposition d'action qui peut être épinglée à droite. Lorsque vous passez en mode d'action, la barre d'outils bascule automatiquement sur le bouton d'accueil (bouton de retour). –