2016-07-11 17 views
2

ActionBarDrawerToggleDrawerLayoutを使用して手動でナビゲーションドロワーを作成しました。選択したアイテムをハイライト表示したい場合は、 。私は引き出しにListViewを持っています。 これは私がlist_view_scolorあるlistSelectorファイル持ってdrawer.xml(フラグメント)選択したアイテムをナビゲーションドロワーにハイライト表示する

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#34344d" 
    android:orientation="vertical" > 

     <ListView 
     android:id="@+id/drawerlist_1" 
     android:dividerHeight="0dp" 
     android:divider="#fffff7" 
     android:layout_weight="1" 
     android:listSelector="@drawable/list_view_scolor" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" > 
    </ListView> 
</LinearLayout> 

です:私は

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 

    <solid android:color="@color/pressed_color" /> 

</shape> 

list_view_listselector.xml私はSINGLE_ROWのコードを投稿していないしている

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Non focused states --> 
    <item 
     android:state_focused="false" 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@color/default_color" /> 
    <item 
     android:state_focused="false" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@color/default_color" /> 
     <!-- Focused states --> 
<item android:state_focused="true" 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@drawable/list_view_listselector" />  
     <item 
     android:state_focused="true" 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@drawable/list_view_listselector" /> 
<!-- Pressed --> 
<item 
     android:state_pressed="true" 
     android:drawable="@drawable/list_view_listselector" /> 
</selector> 

をこのファイルを参照する必要がある場合は、そのファイルを更新することができます。必要に応じてコメントしてください。

リストビューのためのBaseAdapter: -

public class ListView_Adapter extends BaseAdapter { 

    Context context; 
    String[] list; 
    LayoutInflater inflater; 
    public ListView_Adapter(Context context , String[] list) { 
     this.context = context; 
     this.list = list; 
     inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return list.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = convertView; 

     view= inflater.inflate(R.layout.cust_row_listview, null); 

     TextView drawer_item = (TextView) view.findViewById(R.id.drawer_item); 
     String item = list[position]; 
     drawer_item.setText(item); 
     Typeface type = Typeface.createFromAsset(context.getAssets(), 
       "robot_condensed_light.ttf"); 
     drawer_item.setTypeface(type); 
    /* if(position==0){ 
      view.setBackgroundColor(Color.parseColor(context.getResources().getString(R.string.color_list_1))); 
     } 
     else if(position == 1){ 
      view.setBackgroundColor(Color.parseColor(context.getResources().getString(R.string.color_list_2))); 
     } 
     else if(position == 2){ 
      view.setBackgroundColor(Color.parseColor(context.getResources().getString(R.string.color_list_3))); 
     } 
     else if(position == 3){ 
      view.setBackgroundColor(Color.parseColor(context.getResources().getString(R.string.color_list_4))); 
     } 
     else if(position == 4){ 
      view.setBackgroundColor(Color.parseColor(context.getResources().getString(R.string.color_list_5))); 
     }*/ 
     return view; 
    } 


} 

これは私が断片

lv = (ListView) findViewById(R.id.drawerlist_1); 
     ListView_Adapter adapter1 = new ListView_Adapter(this, item1); 
     lv.setAdapter(adapter1); 
     Fragment_Home frag = new Fragment_Home(); 
     fragManager = getSupportFragmentManager(); 
     fragManager.beginTransaction().replace(R.id.frameLayout, frag).commit(); 
     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       //lv.setItemChecked(position, true); 
       //v.setSelection(position); 
       lv.setSelected(true); 
       Fragment frag; 
       if (position == 0) { 
        // getSupportActionBar().setBackgroundDrawable(new 
        // ColorDrawable(getResources().getColor(R.string.color_list_2))); 
        getSupportActionBar().setTitle("Home"); 
        frag = new Fragment_Home(); 
        fragManager.beginTransaction() 
          .replace(R.id.frameLayout, frag).commit(); 
       } else if (position == 1) { 
        // getSupportActionBar().setBackgroundDrawable(new 
        // ColorDrawable(Color.parseColor(getResources().getString(R.string.color_list_2)))); 
        frag = new Fragment_PaytmWallet(); 
        fragManager.beginTransaction() 
          .replace(R.id.frameLayout, frag).commit(); 
        getSupportActionBar().setTitle("PayTM Wallet"); 
        // if(Build.VERSION.SDK_INT>=21){ 
        // Window window = getWindow(); 
        // window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
        // window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
        // window.setStatusBarColor(Color.parseColor(getResources().getString(R.string.color_list_primary_2))); 
        // } 
       } else if (position == 2) { 
        // getSupportActionBar().setBackgroundDrawable(new 
        // ColorDrawable(Color.parseColor(getResources().getString(R.string.color_list_3)))); 
        frag = new Fragment_Categories(); 
        fragManager.beginTransaction() 
          .replace(R.id.frameLayout, frag).commit(); 
        getSupportActionBar().setTitle("Categories"); 
        // if(Build.VERSION.SDK_INT>=21){ 
        // Window window = getWindow(); 
        // window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
        // window.setStatusBarColor(Color.parseColor(getResources().getString(R.string.color_list_primary_3))); 
        // } 
       } else if (position == 3) { 
        // getSupportActionBar().setBackgroundDrawable(new 
        // ColorDrawable(Color.parseColor(getResources().getString(R.string.color_list_4)))); 
        frag = new Fragment_AskAQues(); 
        fragManager.beginTransaction() 
          .replace(R.id.frameLayout, frag).commit(); 
        getSupportActionBar().setTitle("Ask a Question"); 
        // if(Build.VERSION.SDK_INT>=21){ 
        // Window window = getWindow(); 
        // window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
        // window.setStatusBarColor(Color.parseColor(getResources().getString(R.string.color_list_primary_4))); 
        // } 
       } else if (position == 4) { 
        // getSupportActionBar().setBackgroundDrawable(new 
        // ColorDrawable(Color.parseColor(getResources().getString(R.string.color_list_5)))); 
        frag = new Fragment_BeAnExpert(); 
        fragManager.beginTransaction() 
          .replace(R.id.frameLayout, frag).commit(); 
        getSupportActionBar().setTitle("Be an Expert"); 
        // if(Build.VERSION.SDK_INT>=21){ 
        // Window window = getWindow(); 
        // window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
        // window.setStatusBarColor(Color.parseColor(getResources().getString(R.string.color_list_primary_5))); 
        // } 
       } 

       dl.closeDrawers(); 

      } 
     }); 
+0

あなたは、どのようにあなたのフラグメントをナビゲーションドロワーにロードしているのですか? –

+0

FragmentManagerを使用して、リストビューをクリックしてフラグメントをインスタンス化し、次にFragmentManagerをクリックしながらケースを作成します。コードをアップロードする必要がありますか?アダプタの助けを借りて – user6556461

+0

? –

答えて

1

をナビゲートする方法の実装では、以下の手順に従ってください。

アダプタでは、以下のような変数とゲッター関数を作成します。

int mSelectedItem; 

public void setSelectedItem(int selectedItem) { 
    this.mSelectedItem = selectedItem; 
    notifyDataSetChanged(); 
    } 

getViewメソッドの下には、以下が含まれます。あなたのmainactivityで

if (position == mSelectedItem) { 
     drawer_item.setTextColor.setBackgroundColor(ContextCompat.getColor(context, R.color.selected_color)); // Highlighting color 
    } else { 
     drawer_item.setTextColor(ContextCompat.getColor(context, android.R.color.normal_color)); // normal color 
    } 

はonItemclickの下で、以下のようなとしての地位を渡すことで、setSelectedItemを呼び出します。

adapter.setSelectedItem(position); 

これで、ハイライトされたテキストの色が変更されました。あなたはそれをバックグラウンドに設定するためにそれに従うことができます。それがあなたのために働くかどうか確認してください。

+0

ありがとうございました..素晴らしい作業中です... – user6556461

+0

素敵な日です... –

関連する問題