当app:layout_constraintHeight_percent为0.50或0.80时,它可以正常工作,但是当我将其设置为0.99时,Button会变得很长并且大于屏幕的99%?
[HttpPost]
public ActionResult InsertProduct(Product Product)
{
var returnMessage = "";
try
{
InsertProductBLL ProductInsertion = new InsertProductBLL (Product.Value, Product.Description);
var result = ProductInsertion.IsValid(Product.Value);
returnMessage = result.HasResult
? result.SuccessMessage
: result.ErrorMessage;
}
catch (Exception e)
{
Console.Write(e.Message);
returnMessage = "Fail";
}
return PartialView(returnMessage);
}
答案 0 :(得分:0)
这应该有效;
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Button 1" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Button 2" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
答案 1 :(得分:0)
尝试以下代码:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<android.support.constraint.ConstraintLayout
android:background="@android:color/holo_blue_dark"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btn_one"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintHeight_percent="0.91"
android:text="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/btn_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn_one"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</android.support.constraint.ConstraintLayout>
</ScrollView>
希望对您有帮助。
答案 2 :(得分:0)
问题不在于99%layout_constraintHeight_percent
,而是当两个按钮的组合高度超过ScrollView
的屏幕高度时。碰巧有99%的人在您的模拟器/设备上触发了这种任性的行为。如果您将第二个按钮调高得多,则百分比会变小。
我发现这些类型的布局存在问题,其中孩子的尺寸取决于父母的大小,而父母的大小取决于孩子的大小。在您的布局中,子级mybtn1
取决于父级ConstraintLayout
(app:layout_constraintHeight_percent="0.99"
),而父级ConstraintLayout
取决于子级mybtn1
({{ 1}})。当两个按钮的组合高度未超过android:layout_height="wrap_content"
的屏幕高度时,这似乎行得通,但是当组合高度超过其ScrollView
时,失败了。 (当合并高度小于android:fillViewport="true"
高度时,在ScrollView
上设置ScrollView
可能会起作用,因为ScrollView
有一个隐含的固定高度,即屏幕上的可用房地产。不过,这只是个推测。)
您可以通过以下一些编码来解决此问题:
向ScrollView
添加ID:
android:id="@+id/scrollView"
将以下代码放在onCreate()
中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ScrollView scrollView = findViewById(R.id.scrollView);
scrollView.post(new Runnable() {
@Override
public void run() {
Button button = findViewById(R.id.mybtn1);
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) button.getLayoutParams();
// Get percentage height of button.
float percent = lp.matchConstraintPercentHeight;
// Explicitly set the button height based upon the ScrollView height.
button.setHeight((int) (scrollView.getHeight() * percent));
// Reset the percent height so it no longer has any effect.
lp.matchConstraintPercentHeight = 1.0f;
}
});
}
此代码将强制mybtn1
上的大小为ScrollView
高度的99%或为按钮指定的百分比。