android - 约束布局和滚动视图不起作用
问题描述
我正在尝试为我的 Android 应用程序实现布局。在设计器中,我可以看到一切都很好,但是当我模拟(或者当我在手机上安装应用程序时)时,外观完全不同。我附上它在设计器中的显示方式。我看到了所有东西(如我所愿),带有一个 TextView、一个 ScrollView 和一个按钮,用于关闭对话框。
图像的蓝图视图
当我模拟时,情况完全不同:没有办法玩“match_parent”、“wrap_content”等,以获得好的结果。我看到一个完全不同的结果如下。
在设备上模拟
我将此布局应用于对话框,但我不明白为什么我无法获得带有 textview、cardwiev 的滚动视图和按钮的简单布局。
这是用于显示对话框的代码片段:
public void Display_Data_CardView(int mode){
Data_CardView_Dialog = new Dialog(this);
Data_CardView_Dialog.getWindow();
Data_CardView_Dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Data_CardView_Dialog.setCancelable(false);
try{
if (mode == NO_IN_ANIM){
Data_CardView_Dialog.getWindow().getAttributes().windowAnimations = R.style.DialogTheme2_no_in_anim;
}else Data_CardView_Dialog.getWindow().getAttributes().windowAnimations = R.style.DialogTheme2;
}catch (Exception e){
}
Data_CardView_Dialog.setContentView(R.layout.data_view_cards);
Button btnOK = (Button) Data_CardView_Dialog.findViewById(R.id.btnCardViewOK);
btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Data_CardView_Dialog.dismiss();
}
});
Data_CardView_Dialog.show();
}
这里是我的 xml 布局
<?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:id="@+id/clDataViewCards"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dp">
<TextView
android:id="@+id/tvTitoloDataCardView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:text="Dati Letti"
android:textSize="16sp"
android:textStyle="bold|italic"
app:layout_constraintBottom_toTopOf="@+id/glHoriz1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<android.support.constraint.Guideline
android:id="@+id/glHoriz1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.1" />
<ScrollView
android:id="@+id/svDataViewCards"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:fillViewport="true"
app:layout_constraintBottom_toTopOf="@+id/glHoriz2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/glHoriz1">
<LinearLayout
android:id="@+id/item_wrapper_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp">
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard1"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 1" />
<TextView
android:id="@+id/textView12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 2" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard2"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView21"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 3" />
<TextView
android:id="@+id/textView22"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 4" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard3"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView31"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 5" />
<TextView
android:id="@+id/textView32"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 6" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard4"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView41"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 7" />
<TextView
android:id="@+id/textView42"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 8" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard5"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView51"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 9" />
<TextView
android:id="@+id/textView52"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 10" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard6"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView61"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 11" />
<TextView
android:id="@+id/textView62"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 12" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard7"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView71"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 13" />
<TextView
android:id="@+id/textView72"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 14" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:id="@+id/item_cardview_8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="4dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ivCard8"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_margin="8dp"
android:src="@drawable/info_icon"
tools:ignore="contentDescription" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView81"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="TextView 15" />
<TextView
android:id="@+id/textView82"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="TextView 16/>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>
<android.support.constraint.Guideline
android:id="@+id/glHoriz2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.9" />
<Button
android:id="@+id/btnCardViewOK"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:text="@string/Dialogo_View_Data_Cards_Bottone_OK"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/glHoriz2" />
</android.support.constraint.ConstraintLayout>
谁能帮我理解我错在哪里?非常感谢。
编辑 我找到了一个解决方案:我将滚动视图关闭到一个线性布局中,然后我为该线性布局指定了一个宽度“匹配约束”。在java中,当我创建对话框时,我改变了对话框的宽度,改变了第一个TextView的宽度,然后我改变了滚动视图的高度,我得到了我想做的事情。我不知道这是否是思考的方式,但经过多次尝试,这对我有好处。
解决方案
请尝试使用 NestedScrollview,而不是使用 Scrollview。
推荐阅读
- apache - 无法在一个 dockerfile 中安装带有闪亮应用程序的 apache+php
- vb.net - 逐个字符地手动编辑 PDF 的 Unicode 字符映射
- excel - 如何使用officejs在excel中显示范围选择输入对话框
- javascript - 如何遍历 2 个数组以创建新的键/值对象
- android - 如何让多个文本打开不同的活动页面
- php - CKEditor 反斜杠
- python - 将收入映射到二进制
- flutter - CustomPaint 用动画指示重绘
- r - 在 RPostgres 中参数化查询并将结果附加到新的数据框中
- c# - 如何将 wpf 窗口向左展开(动画)以显示更多内容/选项