Как программно создать навигационный ящик?

Мне нужно создать активность с навигационным ящиком только с java без xml. но этот способ не работает для меня. Можно ли создать и добавить в приложение Navigation Drawer без использования xml? В каждом примере, который я видел, был дополнительный XML-файл с макетом. Я очень много искал, но я не получил никаких результатов. Пожалуйста помогите. таким образом, навигационный ящик всегда открывается на contentLayout и не двигается пальцем или смахиванием!

мой код активности:


import androidx.drawerlayout.widget.DrawerLayout;

public class LaunchActivity extends Activity {

    private Context context;
    private DrawerLayout drawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = getApplicationContext();

        //DrawerLayout
        drawerLayout = new DrawerLayout(context);
        drawerLayout.setLayoutParams(new DrawerLayout.LayoutParams(DrawerLayout.LayoutParams.MATCH_PARENT, DrawerLayout.LayoutParams.MATCH_PARENT));

        //ContentLayout
        LinearLayout contentLayout = new LinearLayout(context);
        contentLayout.setOrientation(LinearLayout.VERTICAL);
        contentLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));

        //CustomNavigationView
        RelativeLayout drawerView =  new RelativeLayout(context);
        drawerView.setLayoutParams(new RelativeLayout.LayoutParams(AndroidUtilities.dp(280), RelativeLayout.LayoutParams.MATCH_PARENT));
        drawerView.setGravity(Gravity.START);

        //Add View to ContentLayout
        TextViewFont textView = new TextViewFont(context);
        textView.setText(" = ");
        textView.setTextColor(Color.BLACK);
        textView.setTextSize(20);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                drawerLayout.openDrawer(Gravity.START);
            }
        });
        contentLayout.addView(textView);

        //Add View to CustomNavigationView
        RelativeLayout drawerHeaderView = new RelativeLayout(context);
        drawerHeaderView.setBackground(getResources().getDrawable(R.drawable.drawer_header));
        drawerHeaderView.setGravity(Gravity.BOTTOM);
        drawerHeaderView.setLayoutParams(new RelativeLayout.LayoutParams(AndroidUtilities.dp(280), AndroidUtilities.dp(170)));
        ImageView imageView = new ImageView(context);
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.user));
        imageView.setBaselineAlignBottom(true);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(AndroidUtilities.dp(90), AndroidUtilities.dp(90));
        params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
        params.addRule(RelativeLayout.CENTER_HORIZONTAL);
        drawerHeaderView.addView(imageView, params);
        drawerView.addView(drawerHeaderView);

        //Add All to DrawerLayout
        drawerLayout.addView(contentLayout, new DrawerLayout.LayoutParams(DrawerLayout.LayoutParams.MATCH_PARENT, DrawerLayout.LayoutParams.MATCH_PARENT));
        drawerLayout.addView(drawerView, new RelativeLayout.LayoutParams(AndroidUtilities.dp(280), RelativeLayout.LayoutParams.MATCH_PARENT));
        setContentView(drawerLayout);
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
488
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете использовать этот библиотека, затем переопределить setContentView() в BaseActivity и инициализировать там построитель ящиков.

Другие вопросы по теме