如何解决如何在可穿戴应用程序中实现导航抽屉?
我看过很多教程,但它们都是针对移动应用程序的,我似乎无法在可穿戴应用程序中实现相同的内容。我的应用程序包含一个设置活动。我的应用包含一个 settings Activity。我有几个单选按钮,分为几个部分:
我使用 textviews 将它们分开,告诉每个单选按钮组的用途。例如:
一个显示 Modes 的文本视图是一组用于不同模式的单选按钮。在用户做出他/她的选择后,他们点击一个按钮,他们的选择将数据发送到另一个活动。我想要的是使用导航抽屉划分所有这些部分,以便我访问的每个片段都有一组单选按钮,而不是将它们全部放在我滚动浏览的一个活动中。
我看过有关手机应用的答案。现在我问的是可穿戴设备,因为这就是应用程序的用途,文档页面显示了一个 gif,其中有一个导航抽屉,里面有一个类似旋转木马的东西,可以在不完全确定的活动或片段中导航。这是 gif:https://developer.android.com/wear/images/nav_drawer.gif
我想在我的可穿戴应用上做同样的事情。问题是文档并没有真正详细介绍如何在xml文件中添加多页标签之外的实现细节。我需要做什么来模仿 gif 中的内容?我在文档页面添加了内容,但不知道如何继续,https://developer.android.com/training/wearables/ui/ui-nav-actions#java
这是我在开始工作之前的主要活动:
public class drawer_activity extends FragmentActivity
implements AmbientModeSupport.AmbientCallbackProvider,MenuItem.OnMenuItemClickListener,NavigationView.OnNavigationItemSelectedListener {
private TextView mTextView;
private WearableDrawerLayout wearableDrawerLayout;
private WearableNavigationDrawerView wearableNavigationDrawer;
private WearableActionDrawerView wearableActionDrawer;
//////////////////////////////////////////////////////////
FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer_activity);
mTextView = (TextView) findViewById(R.id.text);
// Top navigation drawer
wearableNavigationDrawer = (WearableNavigationDrawerView) findViewById(R.id.top_navigation_drawer);
wearableNavigationDrawer.setAdapter(new YourImplementationNavigationAdapter(this));
// Peeks navigation drawer on the top.
wearableNavigationDrawer.getController().peekDrawer();
// Bottom action drawer
wearableActionDrawer = (WearableActionDrawerView) findViewById(R.id.bottom_action_drawer);
// Peeks action drawer on the bottom.
wearableActionDrawer.getController().peekDrawer();
wearableActionDrawer.setonMenuItemClickListener(this);
fragmentManager = getSupportFragmentManager();
//Declare Fragments here
}
@Override
public AmbientModeSupport.AmbientCallback getAmbientCallback() {
return null;
}
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment;
switch (item.getItemId()) {
case R.id.Tools:
// fragment = Tools;
setTitle(item.getTitle());
break;
case R.id.Modes:
// fragment = Mode;
setTitle(item.getTitle());
break;
case R.id.Keys:
// fragment = Key;
setTitle(item.getTitle());
break;
}
fragmentManager.beginTransaction().replace(R.id.top_navigation_drawer,fragment).commit();
wearableNavigationDrawer.onDrawerClosed();
return true;
}
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/Tools"
android:icon="@drawable/oil_drill"
android:title="Tool" />
<item
android:id="@+id/Modes"
android:icon="@drawable/mode"
android:title="Mode" />
<item
android:id="@+id/Keys"
android:icon="@drawable/key"
android:title="Key" />
</group>
</menu>
这是主要活动的布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.wear.widget.drawer.WearableDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_grey"
android:padding="@dimen/Box_inset_layout_padding"
tools:context=".drawer_activity"
tools:deviceids="wear"
>
<androidx.wear.widget.drawer.WearableNavigationDrawerView
android:id="@+id/top_navigation_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:navigationStyle="multiPage"
app:actionMenu="@menu/action_drawer_menu"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/inner_frame_layout_padding"
>
<TextView
android:id="@+id/text"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</FrameLayout>
<androidx.wear.widget.drawer.WearableActionDrawerView
android:id="@+id/bottom_action_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</androidx.wear.widget.drawer.WearableDrawerLayout>
我一直在尝试从教程中借用一些东西,以便在手机应用程序上进行类似的操作,但老实说,我觉得我现在不知道我在做什么。 现在,每当我编写它们时,注释的 fragment 变量都会以红色突出显示。我遵循的教程声明了我在 values 目录中的 strings xml 文件中编写的内容,我也在此处执行了此操作:
<string name="Tools">Tool</string>
<string name="Modes">Mode</string>
<string name="Keys">Key</string>
感谢任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。