碎片没有宽度也没有高度

时间:2018-08-12 08:05:22

标签: android android-fragments android-alertdialog

enter image description here

您看到的对话框是具有Dialog主题的活动。里面的布局是 应该与其宽度和高度相匹配的片段。使用import UIKit class MainDashBoardCollectionViewCell: UICollectionViewCell { var button :UIButton = { let btn = UIButton() btn.frame = CGRect(x: btn.frame.width/2, y:btn.frame.width/2, width: 106, height: 97) btn.backgroundColor = UIColor(red: 0.15, green: 0.22, blue: 0.68, alpha: 0.86) btn.layer.cornerRadius = 5 btn.addTarget(self, action: #selector(pressedAction(_:)), for: .touchUpInside) btn.titleLabel?.font = UIFont.setFont(of: 12) btn.setTitleColor(UIColor(red: 0.82, green: 0.56, blue: 0.23, alpha: 1), for: .normal) btn.translatesAutoresizingMaskIntoConstraints = false return btn }() var images: UIImageView = { let imgV = UIImageView() imgV .translatesAutoresizingMaskIntoConstraints = false return imgV }() let Label0: UILabel = { let label = UILabel() label.frame = CGRect(x: 0, y: 0, width: 60, height: 15) label.textColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) label.text = "" label.font = UIFont.setFont(of: 12) label.translatesAutoresizingMaskIntoConstraints = false return label }() override init(frame: CGRect) { super.init(frame: frame) addSubview(images) addSubview(button) addSubview(Label0) shared() } @objc func pressedAction(_ sender: UIButton) { // do your stuff here print("clicked") print("you clicked on button \(sender.tag)") } func shared() { self.contentView.addSubview(button) self.contentView.addSubview(images) NSLayoutConstraint.activate([ button.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 0), button.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0), button.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: 0), button.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0), ]) images.widthAnchor.constraint(equalToConstant: 26).isActive = true images.heightAnchor.constraint(equalToConstant: 28).isActive = true images.centerXAnchor.constraint(equalTo: button.centerXAnchor).isActive = true images.centerYAnchor.constraint(equalTo: button.centerYAnchor, constant: -10).isActive = true Label0.centerXAnchor.constraint(equalTo: images.centerXAnchor).isActive = true Label0.centerYAnchor.constraint(equalTo: button.centerYAnchor, constant: 20).isActive = true } required init?(coder aDecoder: NSCoder) { //super.init(aDecoder) fatalError("init(coder:) has not been implemented") } } 类以编程方式添加它。

问题是片段布局被挤压在一起,看上去很糟糕。我在xml的片段布局和活动中都使用过FragmentTransaction

如何阻止对话框被挤压在一起并具有更大的“自然”大小?

活动

match_parent

片段

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.myapp.rangevoice2.RoundActivity">

<FrameLayout
    android:id="@+id/round_placeholder"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</FrameLayout>
</android.support.constraint.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

自定义警报对话框android的高度和宽度。以下是代码

WindowManager.LayoutParams params = new WindowManager.LayoutParams();

params.copyFrom(alertDialog.getWindow().getAttributes());
params.width = 100;
params.height = 400;
params.x=-190;
params.y=80;
alertDialog.getWindow().setAttributes(params);

不确定,但希望它能起作用。