【问题标题】:Making my navigation list from the right从右侧制作我的导航列表
【发布时间】:2016-01-29 12:59:58
【问题描述】:

我有一个包含导航列表的活动,它从左侧滑动并且可以正常工作,但我希望列表位于右侧。

我试图从我的 xml 文件中更改重力布局,但应用程序崩溃了。

package com.parse.starter;

import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.parse.ParseUser;

public class UserDrawer extends AppCompatActivity {

//Declaring Variables
private ListView DrawerList;
private ArrayAdapter<String> Adapter;
private ActionBarDrawerToggle DrawerToggle;
private DrawerLayout DrawerLayout;
private String ActivityTitle;



final ParseUser currentUser = ParseUser.getCurrentUser();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_drawer);

    DrawerList = (ListView) findViewById(R.id.navList);
    DrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActivityTitle = getTitle().toString();
    addDrawerItems();
    setupDrawer();

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    Button Sample = (Button) findViewById(R.id.button);

}

//Method To Add Items To The List View
private void addDrawerItems() {
    String[] DArray = {"Job List", "Notifications", "Messages", "Log Out"};
    Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, DArray);
    DrawerList.setAdapter(Adapter);
    DrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (position == 0) {
                Intent i0 = new Intent(UserDrawer.this, Set_Info.class);
                startActivity(i0);
            } else if (position == 1) {
                //Intent i1 = new Intent(Drawer1.this, AddPatient.class);
                //startActivity(i1);
            } else if (position == 2) {
                //Intent i2 = new Intent(Drawer1.this, Notifications.class);
                //startActivity(i2);
            } else if (position == 3) {
                //Intent i3 = new Intent(Drawer1.this, Message_Log.class);
                //startActivity(i3);
            } else if (position == 4) {
                Intent i4 = new Intent(UserDrawer.this, MainActivity.class);
                startActivity(i4);
                Toast.makeText(getApplicationContext(), "You are Logged Out", Toast.LENGTH_LONG).show();
                finish();
            }

        }
    });
}

private void setupDrawer() {
    DrawerToggle = new ActionBarDrawerToggle(this, DrawerLayout,
            R.string.drawer_open, R.string.drawer_close) {

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getSupportActionBar().setTitle("Menu");
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            getSupportActionBar().setTitle(ActivityTitle);
            invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    };
    DrawerToggle.setDrawerIndicatorEnabled(true);
    DrawerLayout.setDrawerListener(DrawerToggle);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    // Activate the navigation drawer toggle
    if (DrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    DrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    DrawerToggle.onConfigurationChanged(newConfig);
}
@SuppressWarnings("ResourceType")
public void SampleClick(View view) {
    try {
        Intent i = new Intent(UserDrawer.this,Set_Info.class);
        startActivity(i);
    } catch (Exception e) {

    }
}


}

【问题讨论】:

  • 你的应用的 API 是什么?

标签: java android android-activity navigation navigation-drawer


【解决方案1】:

http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html

使用 android:layout_gravity 属性控制抽屉定位和布局,子视图对应于您希望抽屉从视图的哪一侧出现:左侧或右侧。 (或在支持布局方向的平台版本上开始/结束。)

即它是 android:layout_gravity 而不是 gravity_layout,它应该不再崩溃。

【讨论】:

    【解决方案2】:

    尝试gravity:Endor Right 而不是gravity:Startread this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2018-04-10
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      相关资源
      最近更新 更多