我正在尝试实现我的Android应用程序的布局。在设计师中,我可以看到一切都很好,但是当我模拟(或将该应用程序安装在我的手机上)时,外观完全不同。我附上了它在设计师中的样子。我看到一切都很好(正如我所希望的),有一个TextView、一个ScrollView和一个按钮,用于关闭Diaolog。
图片的蓝图视图
当我进行模拟时,情况完全不同:无论怎样使用“match_parent”、“wrap_content”等进行调整,都无法得到良好的结果。我看到的结果完全不同。
在设备上进行模拟
我将此布局应用于对话框中,但我不明白为什么我不能获得一个简单的包含TextView、ScrollView或CardView以及一个按钮的布局。
以下是用于显示对话框的代码片段:
有人可以帮我理解我的错误在哪里吗?非常感谢。
编辑:我找到了一个解决方案:我将ScrollView嵌套在LinearLayout中,并为该LinearLayout指定了一个“匹配约束”宽度。在Java中,当我创建对话框时,我通过改变第一个TextView的宽度来改变对话框的宽度,然后我改变ScrollView的高度,就得到了我想要的效果。我不知道这是否是正确的方法,但经过多次尝试,这对我很好。
图片的蓝图视图
当我进行模拟时,情况完全不同:无论怎样使用“match_parent”、“wrap_content”等进行调整,都无法得到良好的结果。我看到的结果完全不同。
在设备上进行模拟
我将此布局应用于对话框中,但我不明白为什么我不能获得一个简单的包含TextView、ScrollView或CardView以及一个按钮的布局。
以下是用于显示对话框的代码片段:
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>
有人可以帮我理解我的错误在哪里吗?非常感谢。
编辑:我找到了一个解决方案:我将ScrollView嵌套在LinearLayout中,并为该LinearLayout指定了一个“匹配约束”宽度。在Java中,当我创建对话框时,我通过改变第一个TextView的宽度来改变对话框的宽度,然后我改变ScrollView的高度,就得到了我想要的效果。我不知道这是否是正确的方法,但经过多次尝试,这对我很好。
0dp
。 - Sniffer