小编mit*_*m93的帖子

设置Android片段进入和退出转换?

我正在尝试为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)

android android-fragments

9
推荐指数
1
解决办法
7976
查看次数

在动画期间保持视图在顶部

在活动转换期间,我无法将视图保持在顶部。卡片左侧的图片是一个共享元素,它扩展到第二个活动的一半,我有一个从底部滑入的 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)

android transitions

5
推荐指数
1
解决办法
1635
查看次数

更改对话框多选项的颜色

我正在创建一个警告对话框,其上有几个多选项,我想更改复选框的颜色以更好地适应我的应用程序的主题.这是一张图片:

AlertDialog

您可以看到多项选择项的默认绿色,而我的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)

android android-alertdialog

3
推荐指数
1
解决办法
2737
查看次数

对带有笑话的组件使用自定义模拟

我正在编写一个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 …

javascript mocking reactjs jestjs react-native

1
推荐指数
1
解决办法
950
查看次数