0
引き出しを開くデフォルトのアイコンを変更したいと思います。私はそれを行うことができる方法はありますか?質問で検索したところ、解決できませんでした。ここに私のナビゲーション・ドロワー・クラスがあります。私はそれが私が断片を必要とする他のクラスでそれをインスタンス化します。デフォルトの引き出しアイコン(ハンバーガー)を変更する
public class navigation_drawer extends Fragment {
public static final String PREF_FILE_NAME = "testpref";
public static final String KEY_USER_LEARNED_DRAWER = "user_learned_drawer";
private ActionBarDrawerToggle drawer_toggle;
private DrawerLayout my_drawer_layout;
private View container_view;
private boolean m_userLearnedDrawer;
private boolean m_fromSavedInstanceState;
public navigation_drawer() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
m_userLearnedDrawer = Boolean.valueOf(
readFromPreferences(getActivity() , KEY_USER_LEARNED_DRAWER , "false")
);
if(savedInstanceState != null)
{
m_fromSavedInstanceState = true;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
}
public void setUp(int fragmentId , DrawerLayout dl , final Toolbar toolbar)
{
container_view = getActivity().findViewById(fragmentId);
my_drawer_layout = dl;
drawer_toggle = new ActionBarDrawerToggle(getActivity() , dl , toolbar ,
R.string.drawer_open , R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView)
{
super.onDrawerOpened(drawerView);
if(! m_userLearnedDrawer)
{
m_userLearnedDrawer = true;
saveToPreferences(getActivity() , PREF_FILE_NAME ,
m_userLearnedDrawer + "");
}
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView)
{
super.onDrawerClosed(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item !=null && item.getItemId() == android.R.id.home)
{
if (my_drawer_layout.isDrawerOpen(Gravity.RIGHT))
{
my_drawer_layout.closeDrawer(Gravity.RIGHT);
}
else
{
my_drawer_layout.openDrawer(Gravity.RIGHT);
}
return true;
}
return false;
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset)
{
if(slideOffset < 0.1) {
toolbar.setAlpha(1 - slideOffset);
}
}
};
/*
if(!m_userLearnedDrawer && !m_fromSavedInstanceState)
{
my_drawer_layout.openDrawer(container_view);
}
*/
my_drawer_layout.setDrawerListener(drawer_toggle);
my_drawer_layout.post(
new Runnable() {
@Override
public void run() {
drawer_toggle.syncState();
}
}
);
}
public static void saveToPreferences(Context con , String preferenceName , String preferenceValue)
{
SharedPreferences sp = con.getSharedPreferences(PREF_FILE_NAME , Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString(preferenceName , preferenceValue);
editor.apply();
}
public static String readFromPreferences(Context con , String preferenceName , String preferenceValue)
{
SharedPreferences sp = con.getSharedPreferences(PREF_FILE_NAME , Context.MODE_PRIVATE);
return sp.getString(preferenceName , preferenceValue);
}
}
しかし、私はこのコードを置くときtoolbar.setNavigationIcon(R.drawable.picture);
内部には、デフォルトのハンバーガーのアイコンが表示されますが、私はスライドまたはアイコンをクリックしたときに、それは私の絵に変わり、それがデフォルトのアイコンを置き換えるonDrawerOpened。 ここでは、私がナビゲーションドロワークラスをインスタンス化するクラスがあります。
public class welcome extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
my_toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(my_toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
navigation_drawer myNav = (navigation_drawer) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
myNav.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.welcome_layout), my_toolbar);
}
あなたは何を求めていますか?イメージを常にアイコンにしたい場合は、 'toolbar.setNavigationIcon()'を 'onDrawerOpened()'から呼び出して 'setUp()'メソッドに直接移動してください。 –
私はそれをしましたが、うまくいきませんでした –
いつもデフォルトのものに置き換えたい –