如何解决片段中工具栏上的android上下文操作栏
在横向模式下,我需要为活动中的特定片段显示上下文ActionBar
。
我当前的应用看起来像这样
my app
动作模式启动后
action mode active
我想要达到的目标是这样的
wanted action mode only on fragment
我使用toolbar.startActionMode
在服装ActionBar
上启动androidx.appcompat.widget.Toolbar
,但它似乎并没有绑定到组件本身,而是绑定了整个活动。
我所有的代码:
SecondFragment.java
public class SecondFragment extends Fragment {
public static SecondFragment newInstance() {
return new SecondFragment();
}
private ActionMode selectionMenu;
private Toolbar toolbar;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.second_fragment,container,false);
view.setBackgroundColor(Color.YELLOW);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
FirstFragment.java
public class FirstFragment extends Fragment {
public static FirstFragment newInstance() {
return new FirstFragment();
}
private ActionMode selectionMenu;
private Toolbar toolbar;
@Override
public View onCreateView(LayoutInflater inflater,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.first_fragment,false);
toolbar = (Toolbar)view.findViewById(R.id.toolbarTR);
toolbar.inflateMenu(R.menu.drag_and_drop_menu);
toolbar.setTitle("my toolbar");
toolbar.setonMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getItemId() == R.id.SaveChangesButton) {
selectionMenu = toolbar.startActionMode(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode,Menu menu) {
mode.setTitle(R.string.selection_menu_counter_text);
mode.getMenuInflater().inflate(R.menu.selection_menu,menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode,Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode,MenuItem item) {
switch(item.getItemId()) {
case R.id.ShareFoldersButton:
Toast.makeText(getContext(),"Share",Toast.LENGTH_SHORT).show();
return true;
case R.id.DeleteFoldersButton:
Toast.makeText(getContext(),"Delete",Toast.LENGTH_SHORT).show();
return true;
case R.id.MergeFoldersButton:
Toast.makeText(getContext(),"Merge",Toast.LENGTH_SHORT).show();
return true;
case R.id.copyFoldersButton:
Toast.makeText(getContext(),"copy",Toast.LENGTH_SHORT).show();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {}
});
return true;
}
return false;
}
});
view.setBackgroundColor(Color.CYAN);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container,FirstFragment.newInstance())
.commitNow();
}
}
}
layout-land / main_activity.xml
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android">
<fragment android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/headlines_fragment"
android:name="com.opensourcedocumentscanner.test.ui.main.FirstFragment"/>
<fragment android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="2"
android:id="@+id/article_fragment"
android:name="com.opensourcedocumentscanner.test.ui.main.SecondFragment"/>
</LinearLayout>
layout / main_activity.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />
layout / first_fragment.xml
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".test.ui.main.FirstFragment">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbarTR"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="First Fragment"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
layout / second_fragment.xml
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".test.ui.main.FirstFragment">
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Second Fragment"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。