Android la modification de la largeur de la navigation de tiroir, panneau par programmation
J'ai utilisé le Tiroir de Navigation modèle présente dans Android Studio.
Dans la mise en page de mon activité, j'ai ce code suivant:
<fragment android:id="@+id/navigation_drawer"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.smedilepaolo.newsfeed.NavigationDrawer.NavigationDrawerFragment"
tools:layout="@layout/fragment_navigation_drawer" />
Ce dont j'ai besoin est de modifier par programmation la largeur du panneau.
Je pense que le droit de la zone de changement, c'est ceci:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_feed);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
....
Mais je ne peux pas comprendre comment atteindre mon objectif.
/* Mise à JOUR */
L'icône du tiroir panneau n'est pas montré dans la barre d'action
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mDrawerListView.post(new Runnable() {
@Override
public void run() {
Resources resources = getResources();
float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 240, resources.getDisplayMetrics());
DrawerLayout.LayoutParams params = (DrawerLayout.LayoutParams) mDrawerListView.getLayoutParams();
params.width = (int) (width);
mDrawerListView.setLayoutParams(params);
}
});
selectItem(position);
}
});
mDrawerListView.post(new Runnable() {
@Override
public void run() {
Resources resources = getResources();
float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, resources.getDisplayMetrics().widthPixels-1, resources.getDisplayMetrics());
DrawerLayout.LayoutParams params = (DrawerLayout.LayoutParams) mDrawerListView.getLayoutParams();
params.width = (int) (width);
mDrawerListView.setLayoutParams(params);
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mDrawerLayout.openDrawer(mFragmentContainerView);
}
});
C'est le selectItem méthode
private void selectItem(int position) {
mCurrentSelectedPosition = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
....
InformationsquelleAutor Usi Usi | 2014-08-30
Vous devez vous connecter pour publier un commentaire.
Basé sur le code généré à partir de la Navigation Tiroir modèle, vous pouvez modifier la largeur du panneau en ajoutant ce code à la onCreateView() la méthode dans le NavigationDrawerFragment.
Pour désactiver pan gestes sur DrawerLayout:
//NavigationDrawerFragment
Pour ouvrir/fermer DrawerLayout:
Pour empêcher l'icône du tiroir panneau disparaît, changement setOnItemClickListener méthode comme suit:
Et de modifier le substituée onDrawerClose méthode comme suit: