答案 0 :(得分:14)
将图片图标放在标题中,然后使用css
将其正确定位,试试这个:
在关闭图片上应用此css
:
let closeImg = {cursor:'pointer', float:'right', marginTop: '5px', width: '20px'};
<Dialog
modal={false}
open={true}
title={
<div>
ABC
<img src='https://d30y9cdsu7xlg0.cloudfront.net/png/53504-200.png' style={closeImg}/>
</div>
}
>
Hello
</Dialog>
检查工作小提琴:https://jsfiddle.net/ve0qbgLr/
答案 1 :(得分:12)
我知道在Material UI V1之前已询问过此问题,但可接受的答案适用于Material UI版本0(或他们所说的任何版本)。
对于需要版本1帮助的人,MUI成员公开了一个接受<DialogTitle />
的{{1}}组件,因此您可以自定义对话框。
EG
disableTypography
我只在<Dialog open={this.state.show} onClose={this.onClose}>
<DialogTitle disableTypography className={styles.dialogTitle}>
<h2>Dialog...</h2>
<IconButton onClick={this.onClose}>
<CloseIcon />
</IconButton>
</DialogTitle>
<DialogContent>
<span>Dialog Content</span>
</DialogContent>
</Dialog>
和图标之间使用flex并留有空格
h2
希望可以帮助别人。 :-)
答案 2 :(得分:2)
我认为您也可以使用 Grid
(请参阅教程 here)。
类似的东西
import Grid from '@material-ui/core/Grid';
import IconButton from '@material-ui/core/IconButton';
import CloseIcon from '@material-ui/icons/Close';
<DialogTitle>
<Grid container direction="row" justify="space-between" alignItems="center">
{myTitle}
<IconButton aria-label="close" onClick={closeDialog}>
<CloseIcon />
</IconButton>
</Grid>
</DialogTitle>
答案 3 :(得分:1)
适用于任何使用Material UI V4寻找解决方案的人。
import IconButton from '@material-ui/core/IconButton';
import CloseIcon from '@material-ui/icons/Close';
<DialogTitle id="id">
<Box display="flex" alignItems="center">
<Box flexGrow={1} >{title}</Box>
<Box>
<IconButton onClick={onClose}>
<CloseIcon />
</IconButton>
</Box>
</Box>
</DialogTitle>
答案 4 :(得分:1)
我知道这是一个老问题,但我发现它是因为我遇到了同样的问题。所以对于像我这样的人来说,Material-UI 的 Dialog-Demo 列出了一个带有关闭按钮的 example:
import React from 'react';
import { createStyles, Theme, withStyles, WithStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import Dialog from '@material-ui/core/Dialog';
import MuiDialogTitle from '@material-ui/core/DialogTitle';
import MuiDialogContent from '@material-ui/core/DialogContent';
import MuiDialogActions from '@material-ui/core/DialogActions';
import IconButton from '@material-ui/core/IconButton';
import CloseIcon from '@material-ui/icons/Close';
import Typography from '@material-ui/core/Typography';
const styles = (theme: Theme) =>
createStyles({
root: {
margin: 0,
padding: theme.spacing(2),
},
closeButton: {
position: 'absolute',
right: theme.spacing(1),
top: theme.spacing(1),
color: theme.palette.grey[500],
},
});
export interface DialogTitleProps extends WithStyles<typeof styles> {
id: string;
children: React.ReactNode;
onClose: () => void;
}
const DialogTitle = withStyles(styles)((props: DialogTitleProps) => {
const { children, classes, onClose, ...other } = props;
return (
<MuiDialogTitle disableTypography className={classes.root} {...other}>
<Typography variant="h6">{children}</Typography>
{onClose ? (
<IconButton aria-label="close" className={classes.closeButton} onClick={onClose}>
<CloseIcon />
</IconButton>
) : null}
</MuiDialogTitle>
);
});
const DialogContent = withStyles((theme: Theme) => ({
root: {
padding: theme.spacing(2),
},
}))(MuiDialogContent);
const DialogActions = withStyles((theme: Theme) => ({
root: {
margin: 0,
padding: theme.spacing(1),
},
}))(MuiDialogActions);
export default function CustomizedDialogs() {
const [open, setOpen] = React.useState(false);
const handleClickOpen = () => {
setOpen(true);
};
const handleClose = () => {
setOpen(false);
};
return (
<div>
<Button variant="outlined" color="primary" onClick={handleClickOpen}>
Open dialog
</Button>
<Dialog onClose={handleClose} aria-labelledby="customized-dialog-title" open={open}>
<DialogTitle id="customized-dialog-title" onClose={handleClose}>
Modal title
</DialogTitle>
<DialogContent dividers>
<Typography gutterBottom>
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis
in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
</Typography>
<Typography gutterBottom>
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis
lacus vel augue laoreet rutrum faucibus dolor auctor.
</Typography>
<Typography gutterBottom>
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel
scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus
auctor fringilla.
</Typography>
</DialogContent>
<DialogActions>
<Button autoFocus onClick={handleClose} color="primary">
Save changes
</Button>
</DialogActions>
</Dialog>
</div>
);
}