CTS test to ensure RelativeLayout alignBaseline works correctly
Bug: 22613599
Change-Id: Ib130c11c2f4684dafec06a68bab7765ec723be4d
diff --git a/tests/tests/widget/res/layout/relative_layout_baseline.xml b/tests/tests/widget/res/layout/relative_layout_baseline.xml
new file mode 100644
index 0000000..f4e9174
--- /dev/null
+++ b/tests/tests/widget/res/layout/relative_layout_baseline.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="5dp" >
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+
+ <Button
+ android:id="@+id/button1"
+ android:layout_alignParentTop="true"
+ android:layout_width="150dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:text="@string/relative_view1"
+ android:layout_alignBottom="@+id/button2" />
+ <Button
+ android:id="@+id/button2"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@id/button1"
+ android:layout_width="150dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:text="@string/relative_view2" />
+ <Button
+ android:id="@+id/button3"
+ android:layout_alignTop="@+id/button4"
+ android:layout_width="150dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:layout_alignBaseline="@+id/button4"
+ android:text="@string/relative_view3" />
+ <Button
+ android:id="@+id/button4"
+ android:layout_below="@id/button2"
+ android:layout_toRightOf="@id/button3"
+ android:layout_width="150dp"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:text="@string/relative_view4" />
+
+ <TextView
+ android:id="@+id/textView"
+ android:layout_below="@+id/button3"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ </RelativeLayout>
+
+</ScrollView>
\ No newline at end of file
diff --git a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
index aae069a..b228ca6 100644
--- a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
+++ b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
@@ -329,6 +329,30 @@
assertEquals("Get missing rule", 0, p.getRule(RelativeLayout.ABOVE));
}
+ /**
+ * Tests to prevent regressions in baseline alignment.
+ */
+ public void testBaselineAlignment() {
+ mActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ mActivity.setContentView(R.layout.relative_layout_baseline);
+ }
+ });
+ getInstrumentation().waitForIdleSync();
+
+ View button = mActivity.findViewById(R.id.button1);
+ assertTrue(button.getHeight() > 0);
+
+ button = mActivity.findViewById(R.id.button2);
+ assertTrue(button.getHeight() > 0);
+
+ button = mActivity.findViewById(R.id.button3);
+ assertTrue(button.getHeight() > 0);
+
+ button = mActivity.findViewById(R.id.button4);
+ assertTrue(button.getHeight() > 0);
+ }
+
private class MyRelativeLayout extends RelativeLayout {
public MyRelativeLayout(Context context) {
super(context);