Как добавить элементы в меню «Навигационный ящик» по горизонтали? - PullRequest
0 голосов
/ 21 ноября 2018

enter image description here

Вышеуказанное ведет себя как меню ящика навигации Android, но написано на c ++, и я пытаюсь скопировать его в Android с помощью меню ящика навигации.вертикально.Это часть приложения для ТВ, а не для смартфонов.Я не могу отобразить содержимое по горизонтали, это вообще возможно?Может кто-нибудь, пожалуйста, помогите!Это то, чем я управлял до сих пор:

enter image description here

activity_navigation_drawer.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:id="@+id/nav_drawer">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="1dp"
        android:contentDescription="Icons"/>

    <TextView
        android:id="@+id/titles"
        android:layout_width ="90dp"
        android:layout_height ="wrap_content"
        android:layout_marginLeft ="-40dp"
        android:layout_marginTop ="70dp"
        android:textColor ="@color/colorPrimary"
        android:textSize="16sp"
        android:layout_below ="@+id/icon"/>  
</LinearLayout>

NavigationAdapter.java

public class NavigationAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] titles;
    private final int[] icon;

    public NavigationAdapter(Context context, int[] icon, String[] titles){
        super(context, R.layout.activity_navigation_drawer,titles);
        this.context=context;
        this.icon = icon;
        this.titles = titles;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.activity_navigation_drawer,parent,false);

        ImageView imageView=(ImageView)rowView.findViewById(R.id.icon);
        TextView textView = (TextView)rowView.findViewById(R.id.titles);

        imageView.setImageResource(icon[position]);
        textView.setText(titles[position]);

        return rowView;
    }
}

MainActivity.java

public class MainActivity extends AppCompatActivity {
    private ListView mDrawerList1;
    private DrawerLayout mDrawerLayout;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDrawerList1 = (ListView) findViewById(R.id.resource_bank);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        addDrawerItems();

        navOne = (ImageButton) findViewById(R.id.nav_one);
        navOne.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
                    mDrawerLayout.closeDrawer(GravityCompat.START);
                } else {
                    mDrawerLayout.openDrawer(GravityCompat.START);
                }
            }
        });
    }

    private void addDrawerItems() {

        int [] icon = {R.drawable.xxx_my_computer,
                R.drawable.xxx_my_items,
                R.drawable.xxx_favorite,
                R.drawable.xxx_remote,
            };

        String [] name ={"Computer",
                "Items",
                "Favorite",
                "Remote",
            };

        NavigationAdapter onAdapter = new NavigationAdapter(MainActivity.this,icon,name);
        mDrawerList1.setAdapter(onAdapter);

        mDrawerList1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this, "Resource Bank", Toast.LENGTH_SHORT).show();
            }
        });
    }       
}   

1 Ответ

0 голосов
/ 21 ноября 2018

просто используйте bottomnavigationview и сделайте родительский макет Relative layout, а затем используйте alignparrenttop = true в представлении bottomnavigation просто

или

сделайте линейное расположение с горизонтальной ориентацией, а затем присвойте ему значение веса, соответствующее вашему варианту, напримересли вы хотите показать 3 вариант, то дайте ему weightsum 3 и разделите его на 3 варианта, просто

...