我正在尝试为DialogFragment设置进入和退出转换,这似乎很直接.以下是我的DrinkDetailActivity中创建对话框的代码:
fab.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//create and display the dialog
DialogFragment orderFragment = new OrderDrinkDialogFragment();
//set the slide transition for the fragment
Transition dialSlide = new Slide();
dialSlide.setDuration(300);
orderFragment.setEnterTransition(dialSlide);
orderFragment.setExitTransition(dialSlide);
orderFragment.show(getFragmentManager(), "order");
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的OrderDrinkDialogFragment类的代码:
public class OrderDrinkDialogFragment extends DialogFragment
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(DrinkDetailActivity.activity);
//set up the Linear Layout of the dialog
LinearLayout layout = new LinearLayout(DrinkDetailActivity.activity);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(params);
//set up the …Run Code Online (Sandbox Code Playgroud) 在活动转换期间,我无法将视图保持在顶部。卡片左侧的图片是一个共享元素,它扩展到第二个活动的一半,我有一个从底部滑入的 FAB。我将饮料的 ImageView 作为共享元素过渡,而 FAB 是从底部开始的幻灯片过渡。
在 FAB 的幻灯片动画期间,它停留在 ImageView 下方,如您在第二张图片中所见。然而,在它完成动画后,它会弹出 ImageView 的顶部,如您在第三张图片中看到的那样。我在退出转换过程中遇到了同样的问题,当它开始滑动时它会立即弹出 ImageView 下方。
我希望 FAB 在整个过程中始终处于 ImageView 之上,我该如何实施?
主要活动:
FAB还在滑动时的次要Activity:

FAB 滑动完成后的次要 Activity:

次要活动的 XML 文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/drinkImage"
android:layout_width="match_parent"
android:layout_height="300dp"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:gravity="start"
android:transitionName="@string/drink_image_transition"
/>
<TextView
android:padding="8dp"
android:id="@+id/drinkName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:translationY="@dimen/detail_drink_name_vertical_offset"
android:textSize="24sp"
android:textColor="@color/text_primary"
android:transitionName="@string/drink_name_transition"
/>
<ImageButton
android:id="@+id/fab"
android:layout_width="@dimen/fab_size_normal"
android:layout_height="@dimen/fab_size_normal"
android:layout_margin="@dimen/add_button_margin"
android:translationX="@dimen/detail_fab_horizontal_offset"
android:translationY="@dimen/detail_fab_vertical_offset"
android:background="@drawable/fab_shape"
android:elevation="@dimen/elevation_low"
android:src="@drawable/fab_ic_add"
android:stateListAnimator="@anim/button_elevation"
android:transitionName="fab_transition"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
次要活动的 onCreate() 方法:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.details_drink);
//grab Drink parcel …Run Code Online (Sandbox Code Playgroud) 我正在创建一个警告对话框,其上有几个多选项,我想更改复选框的颜色以更好地适应我的应用程序的主题.这是一张图片:

您可以看到多项选择项的默认绿色,而我的EditText具有正确的强调色.这是我创建对话框的代码:
public class OrderDrinkDialogFragment extends DialogFragment
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(DrinkDetailActivity.activity);
//set dialog title
builder.setTitle(R.string.dialog_title);
builder.setView(R.layout.order_drink_dialog);
//MultiChoice for double shot and mixed with soda
builder.setMultiChoiceItems(R.array.dialog_checkboxes,null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked)
{
}
});
Dialog dialog = builder.create();
dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
return dialog;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的XML文件,我正在设置布局(order_drink_dialog.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/username"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/order_dialog_name_padding"
android:layout_marginEnd="@dimen/order_dialog_name_padding"
android:layout_marginBottom="@dimen/order_dialog_name_padding"
android:hint="@string/dialog_name_hint"
android:theme="@style/AppTheme"
/>
</LinearLayout> …Run Code Online (Sandbox Code Playgroud) 我正在编写一个React-Native应用程序,在其中我需要测试一个屏幕:
MyScreen.js
import React, { Component } from "react";
import CustomTable from "./CustomTable";
export default MyScreen extends Component {
render() {
return <CustomTable />;
}
}
Run Code Online (Sandbox Code Playgroud)
CustomTable.ios.js
import React, { Component } from "react";
import { View } from "react-native";
import TableView from "react-native-tableview";
export default MyScreen extends Component {
render() {
return (
<View>
...some stuff
<TableView />
</View>
);
}
}
Run Code Online (Sandbox Code Playgroud)
react-native-tableview调用了一些iOS特定代码,因此我仅通过返回文件夹中的android版本(CustomTable.android.js)就将其模拟了__mocks__
__mocks__/CustomTable.ios.js
import CustomAndroidTable from "../CustomTable.android";
export const CustomTable = CustomAndroidTable;
Run Code Online (Sandbox Code Playgroud)
我想MyScreen.js …