2016-09-16 15 views
2

プログラムで、右上のツールバーの隅にボタンを追加し、これは私のコードです:私はツールバーの右上隅にボタンを追加しようとしている

mToolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); 

    verified_btn = new Button(getActivity()); 
    verified_btn.setBackgroundResource(R.drawable.ic_done_black_24dp); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT); 

    params.addRule(RelativeLayout.ALIGN_PARENT_END); 
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    params.width = 80; 
    params.height = 80; 

    verified_btn.setLayoutParams(params); 
    verified_btn.setOnClickListener(this); 
    mToolbar.addView(verified_btn); 

が、これは結果である:

enter image description here

私は別の方法で試しましたが、いつもそこにあります、どうすればいいですか?

+0

'Toolbar'は' RelativeLayout'の子ではありません。そのため、 'RelativeLayout.LayoutParams'ルールは影響を受けません。ルールの代わりにボタンに '重力'を加えることができます。 –

+0

私はすでにこれを試しました:params.gravity = Gravity.END;このparams.gravity = Gravity.RIGHTは成功しません。 – Piero

+0

ツールバーの右側がメニュー用に予約されています。メニュー項目として設定する必要があります。 –

答えて

1

あなたのアクティビティに追加してください。メニューが追加されます。

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.clear(); 
    inflater.inflate(R.menu.right_menu, menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    switch (id) { 
     case R.id.action_home: 
      //Do Whatever you want to do here. 
      return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

res > menu > right_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/action_home" 
     android:orderInCategory="100" 
     android:title="@string/title_activity_home" 
     android:icon="@drawable/ic_home" 
     app:showAsAction="ifRoom" /> 
</menu> 

アプリの下に新しいXMLを追加します。showAsAction = "常に"は常にあなたのアイコンが表示されます

:あなたはフラグメントを持っています。この行をフラグメントのonCreateに書く必要があります。

setHasOptionsMenu(true); 

enter image description here

+0

onCreateOptionsMenuは、フラグメントで使用されていないことを教えてください – Piero

+0

ありがとう!どうやって色を変えることができますか?今それは黒で、私はそれを白にしたいです – Piero

+0

イメージを白に置き換えます –

関連する問題