如何解决是否可以在弹出窗口中使用 ActionBar
在我扩展 ListFragment 的类中,我有一个弹出窗口,当我单击一个按钮时会显示该窗口。我的问题是我不知道是否可以在其中使用 ActionBar。我的意思是我想要一个后退箭头,当它被点击时它应该关闭(关闭)弹出窗口。我的意思是:像这样:
toolbar = findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Enter transaction");
getSupportActionBar().setdisplayHomeAsUpEnabled(true);
这样的功能是否可行?或者我应该使用可自定义的工具栏和添加的 ImageView 使用设置侦听器来关闭弹出窗口?或者我应该创建自定义对话框?
我附上一个文件,其中显示了我现在拥有的以及我想要实现的目标。 image
这是我班级的片段
public class LastTransactionsFragment extends ListFragment implements,View.OnClickListener{
//popupWindow
private View popupView;
private Button chooseTransactionDate;
private Button choosetodayTomorrow;
private RadioGroup chooseTransactionType;
private RadioButton chosenTransactionExpense;
private RadioButton chosenTransactionIncome;
private ImageView transactionCategoryImage;
private Spinner chooseTransactionCategory;
private EditText chooseTransactionAmount;
private EditText chooseTransactionName;
private Button saveTransactionButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_last_transactions,container,false);
addTransactionActionButton = view.findViewById(R.id.add_transaction_action_button);
addTransactionActionButton.setonClickListener(this);
return view;
}
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.add_transaction_action_button: {
// inflate the layout of the popup window
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(LAYOUT_INFLATER_SERVICE);
popupView = inflater.inflate(R.layout.activity_transaction,null);
PopupWindow popupWindow = new PopupWindow(popupView,565,760,true);
popupWindow.showAtLocation(popupView,Gravity.CENTER,0);
Toolbar toolbar = popupView.findViewById(R.id.tool_bar);
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setTitle("New transaction");
int currentDay = 1;
int currentMonth = Integer.parseInt(actualChosenMonth.getText().toString().substring(0,2)) - 1;
int currentYear = Integer.parseInt(actualChosenMonth.getText().toString().substring(3,7));
SimpleDateFormat simpledateformat = new SimpleDateFormat("EE");
Date date = new Date(currentYear,currentMonth,currentDay - 1);
String currentDayOfWeek = simpledateformat.format(date);
String currentDateAsstring = convertDatetoString(currentDay,currentYear,currentDayOfWeek);
chooseTransactionDate = popupView.findViewById(R.id.chooseTransactionDate);
chooseTransactionDate.setText(currentDateAsstring);
chooseTransactionDate.setonClickListener(this);
//I cut rest of of listener
saveTransactionButton = popupView.findViewById(R.id.saveTransactionButton);
saveTransactionButton.setonClickListener(this);
break;
}
default:
break;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="wrap_content"
android:background="@color/bacgroundColorPopup"
tools:context=".TransactionActivity">
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar" />
<Button
android:id="@+id/saveTransactionButton"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_below="@+id/chooseTransactionName"
android:layout_centerInParent="true"/>
//I cut rest of layout
</RelativeLayout>
解决方法
我解决了我的问题。我用过这个:
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
((AppCompatActivity) getActivity()).getSupportActionBar();
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。