Merge "Fix the order of talkback focus for ConversationLayout when expanded" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-09-09 18:05:51 +00:00
committed by Android (Google) Code Review
3 changed files with 53 additions and 32 deletions

View File

@@ -111,6 +111,7 @@ public class ConversationLayout extends FrameLayout
private Icon mLargeIcon; private Icon mLargeIcon;
private View mExpandButtonContainer; private View mExpandButtonContainer;
private ViewGroup mExpandButtonAndContentContainer; private ViewGroup mExpandButtonAndContentContainer;
private ViewGroup mExpandButtonContainerA11yContainer;
private NotificationExpandButton mExpandButton; private NotificationExpandButton mExpandButton;
private MessagingLinearLayout mImageMessageContainer; private MessagingLinearLayout mImageMessageContainer;
private int mBadgeProtrusion; private int mBadgeProtrusion;
@@ -234,6 +235,8 @@ public class ConversationLayout extends FrameLayout
}); });
mConversationText = findViewById(R.id.conversation_text); mConversationText = findViewById(R.id.conversation_text);
mExpandButtonContainer = findViewById(R.id.expand_button_container); mExpandButtonContainer = findViewById(R.id.expand_button_container);
mExpandButtonContainerA11yContainer =
findViewById(R.id.expand_button_a11y_container);
mConversationHeader = findViewById(R.id.conversation_header); mConversationHeader = findViewById(R.id.conversation_header);
mContentContainer = findViewById(R.id.notification_action_list_margin_target); mContentContainer = findViewById(R.id.notification_action_list_margin_target);
mExpandButtonAndContentContainer = findViewById(R.id.expand_button_and_content_container); mExpandButtonAndContentContainer = findViewById(R.id.expand_button_and_content_container);
@@ -1091,7 +1094,7 @@ public class ConversationLayout extends FrameLayout
newContainer = mExpandButtonAndContentContainer; newContainer = mExpandButtonAndContentContainer;
} else { } else {
buttonGravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP; buttonGravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
newContainer = this; newContainer = mExpandButtonContainerA11yContainer;
} }
mExpandButton.setExpanded(!mIsCollapsed); mExpandButton.setExpanded(!mIsCollapsed);

View File

@@ -89,45 +89,62 @@
<include layout="@layout/notification_material_action_list" /> <include layout="@layout/notification_material_action_list" />
</com.android.internal.widget.RemeasuringLinearLayout> </com.android.internal.widget.RemeasuringLinearLayout>
<!--This is dynamically placed between here and at the end of the layout. It starts here since <!--expand_button_a11y_container ensures talkback focus order is correct when view is expanded.
only FrameLayout layout params have gravity--> The -1px of marginTop and 1px of paddingTop make sure expand_button_a11y_container is prior to
its sibling view in accessibility focus order.
{see android.view.ViewGroup.addChildrenForAccessibility()}
expand_button_container will be moved under expand_button_and_content_container when collapsed,
this dynamic movement ensures message can flow under expand button when expanded-->
<FrameLayout <FrameLayout
android:id="@+id/expand_button_container" android:id="@+id/expand_button_a11y_container"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="end|top" android:layout_gravity="end|top"
android:clipChildren="false" android:clipChildren="false"
android:clipToPadding="false"> android:clipToPadding="false"
<!--This layout makes sure that we can nicely center the expand content in the android:layout_marginTop="-1px"
collapsed layout while the parent makes sure that we're never laid out bigger android:paddingTop="1px"
than the messaging content.--> >
<LinearLayout <!--expand_button_container is dynamically placed between here and at the end of the
android:id="@+id/expand_button_touch_container" layout. It starts here since only FrameLayout layout params have gravity-->
<FrameLayout
android:id="@+id/expand_button_container"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="@dimen/conversation_expand_button_height" android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_gravity="end|top" android:layout_gravity="end|top"
android:paddingEnd="0dp"
android:clipToPadding="false"
android:clipChildren="false" android:clipChildren="false"
> android:clipToPadding="false">
<!-- Images --> <!--expand_button_touch_container makes sure that we can nicely center the expand
<com.android.internal.widget.MessagingLinearLayout content in the collapsed layout while the parent makes sure that we're never laid out
android:id="@+id/conversation_image_message_container" bigger than the messaging content.-->
android:forceHasOverlappingRendering="false" <LinearLayout
android:layout_width="40dp" android:id="@+id/expand_button_touch_container"
android:layout_height="40dp" android:layout_width="wrap_content"
android:layout_marginStart="@dimen/conversation_image_start_margin" android:layout_height="@dimen/conversation_expand_button_height"
android:spacing="0dp" android:orientation="horizontal"
android:layout_gravity="center" android:layout_gravity="end|top"
android:paddingEnd="0dp"
android:clipToPadding="false" android:clipToPadding="false"
android:clipChildren="false" android:clipChildren="false"
/> >
<include layout="@layout/notification_expand_button" <!-- Images -->
android:layout_width="wrap_content" <com.android.internal.widget.MessagingLinearLayout
android:layout_height="wrap_content" android:id="@+id/conversation_image_message_container"
android:layout_gravity="center" android:forceHasOverlappingRendering="false"
/> android:layout_width="40dp"
</LinearLayout> android:layout_height="40dp"
android:layout_marginStart="@dimen/conversation_image_start_margin"
android:spacing="0dp"
android:layout_gravity="center"
android:clipToPadding="false"
android:clipChildren="false"
/>
<include layout="@layout/notification_expand_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
</LinearLayout>
</FrameLayout>
</FrameLayout> </FrameLayout>
</com.android.internal.widget.ConversationLayout> </com.android.internal.widget.ConversationLayout>

View File

@@ -4279,6 +4279,7 @@
<java-symbol type="id" name="conversation_icon_badge_ring" /> <java-symbol type="id" name="conversation_icon_badge_ring" />
<java-symbol type="id" name="conversation_icon_badge_bg" /> <java-symbol type="id" name="conversation_icon_badge_bg" />
<java-symbol type="id" name="expand_button_container" /> <java-symbol type="id" name="expand_button_container" />
<java-symbol type="id" name="expand_button_a11y_container" />
<java-symbol type="id" name="expand_button_touch_container" /> <java-symbol type="id" name="expand_button_touch_container" />
<java-symbol type="id" name="messaging_group_content_container" /> <java-symbol type="id" name="messaging_group_content_container" />
<java-symbol type="id" name="expand_button_and_content_container" /> <java-symbol type="id" name="expand_button_and_content_container" />