2015-06-28 7 views
9

Ciao Sto usando Android NavigationView. Voglio cambiare la direzione delle icone in RTL anziché LTR come questa:Come modificare la direzione delle icone per le voci di menu in un NavigationView?

Come posso fare questo?

Example image

+0

provi questo? http://stackoverflow.com/questions/30613799/how-to-position-menu-items-in-navigation-view – itzhar

+0

C'è una soluzione alternativa per gli elementi RTL se si utilizza la libreria https://github.com/mikepenz/MaterialDrawer. Non sono riuscito a trovare la correzione per NavigationView. –

risposta

-1

cerca di impostare il vostro cassetto di navigazione del layout voce gravità. Esempio:

android:gravity="right" 
-2

basta aggiungere android:supportsRtl="true" attributo all'elemento nel file manifest.

Per ulteriori informazioni consulta: here

+0

questa soluzione funziona solo per API17 +. – Hafez

3

è possibile utilizzare ListView all'interno del navigationview come quello che ho fatto. Il vantaggio di questo è che si può avere un migliore controllo su questo:

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/header" 
    > 
    <ListView 
     android:id="@+id/navigationmenu" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="192dp" 
     android:background="@android:color/white"> 
    </ListView> 

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

e nav voce dovrebbe essere simile a questo:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 

    android:background="@color/cardview_dark_background" 
    > 
    <ImageView 
     android:id="@+id/img" 
     android:layout_width="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_height="wrap_content" 
     android:src="@drawable/viewlist" 
     /> 
    <TextView 
     android:id="@+id/tvlstName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="20dp" 
     android:layout_marginRight="30dp" 
     android:textColor="@color/colorPrimary" 

     /> 
</RelativeLayout> 

e navcustomadapter come questo:

package com.example.android.dezcook; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

/** 
* Created by Android on 6/4/2016. 
*/ 
public class navCustomAdapter extends BaseAdapter { 

    String[] result; 
    Context context; 
    int[] imageId; 
    private static LayoutInflater inflater=null; 
    public navCustomAdapter(MainActivity mainActivity,String[] prgmNameList,int[] prgImages) 
    { 
     result=prgmNameList; 
     imageId=prgImages; 
     context =mainActivity; 
     inflater =(LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 

    } 
    @Override 
    public int getCount() 
    { 
     return result.length; 
    } 
    @Override 
    public Object getItem(int position) 
    { 
     return position; 
    } 
    @Override 
    public long getItemId(int position) 
    { 
     return position; 
    } 
    public class Holder 
    { 
     TextView tv; 
     ImageView img; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) 
    { 
     Holder holder=new Holder(); 
     View rowView; 
     rowView=inflater.inflate(R.layout.navitem,null); 
     holder.tv=(TextView)rowView.findViewById(R.id.tvlstName); 
     holder.img=(ImageView)rowView.findViewById(R.id.img); 
     holder.tv.setText(result[position]); 
     holder.img.setImageResource(imageId[position]); 
     rowView.setOnClickListener(new View.OnClickListener() { 
             @Override 
             public void onClick(View v) { 
              Toast.makeText(context,"you Clicked "+result[position],Toast.LENGTH_LONG).show(); 
             } 
            } 


     ); 
     return rowView; 
    } 

} 

finalmente chiamano in attività principale come questa:

ListView lv=(ListView)findViewById(R.id.navigationmenu); 
     lv.setAdapter(new navCustomAdapter(this,navItem,prgmImages) 
1

Basta capirlo!

Prova ad aggiungere questi attributi a NavigationView nel file di layout.

android:layoutDirection="rtl" 
android:textDirection="rtl" 

Schermata

enter image description here

Nota: Sembra il suo lavoro sulla API 17 e superiori

Problemi correlati