我得到了这个设置:
<ScrollView 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"
android:fillViewport="true">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="0dp"
android:layout_height="0dp"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
app:layout_constraintBottom_toTopOf="@+id/guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.35" />
...
</android.support.constraint.ConstraintLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
现在,当视图未满并且不需要滚动条时 - 一切都按预期工作 - 图像相对于屏幕尺寸为 35%。但随着图像下方出现更多内容,就出现了对滚动条的需求,并且指南的 0.35% 的 constrainGuide 似乎是根据屏幕的整个长度(而不是物理长度)计算的,因此随着视图变得“更长”,ImageView 也会变得更大。有没有办法避免这种情况并且始终具有物理屏幕尺寸的 x%?
所以我有这个取消按钮:
<p:commandButton id="cancelButton" value="Cancel" action="#{myBean.doOnCancel}" onclick="dialogWidget.hide();" />
Run Code Online (Sandbox Code Playgroud)
取消按钮所在的小部件 ( <p:dialog>
) 有一个日期字段。每次我打开对话框时,输入一些有效值并单击取消 -myBean.doOnCancel
执行并隐藏对话框。现在,每次我打开对话框时,输入一个无效值,例如单个字母而不是日期,我都会收到一条验证消息,指出日期格式错误,然后单击取消 - 对话框已隐藏,但操作中定义的方法 ( myBean.doOnCancel
)不被执行。知道为什么吗?