migrated user list item to ConstraintLayout

This commit is contained in:
Mariotaku Lee 2018-01-01 22:42:37 +08:00
parent 8ccb561612
commit 43a4204536
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
2 changed files with 229 additions and 239 deletions

View File

@ -33,6 +33,7 @@ import org.mariotaku.twidere.adapter.iface.IUsersAdapter
import org.mariotaku.twidere.adapter.iface.IUsersAdapter.* import org.mariotaku.twidere.adapter.iface.IUsersAdapter.*
import org.mariotaku.twidere.extension.loadProfileImage import org.mariotaku.twidere.extension.loadProfileImage
import org.mariotaku.twidere.extension.model.hasSameHost import org.mariotaku.twidere.extension.model.hasSameHost
import org.mariotaku.twidere.extension.setVisible
import org.mariotaku.twidere.model.ParcelableUser import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.promise.FriendshipPromises import org.mariotaku.twidere.promise.FriendshipPromises
import org.mariotaku.twidere.util.Utils.getUserTypeIconRes import org.mariotaku.twidere.util.Utils.getUserTypeIconRes
@ -62,14 +63,11 @@ class UserViewHolder(
private val unblockButton = itemView.unblock private val unblockButton = itemView.unblock
private val unmuteButton = itemView.unmute private val unmuteButton = itemView.unmute
private val followButton = itemView.follow private val followButton = itemView.follow
private val actionsProgressContainer = itemView.actionsProgressContainer
private val actionsContainer = itemView.actionsContainer
private val processingRequestProgress = itemView.processingRequest private val processingRequestProgress = itemView.processingRequest
private val countsContainer = itemView.countsContainer private val countsContainer = itemView.countsContainer
private var userClickListener: UserClickListener? = null private var userClickListener: UserClickListener? = null
private var requestClickListener: RequestClickListener? = null private var requestClickListener: RequestClickListener? = null
private var friendshipClickListener: FriendshipClickListener? = null private var friendshipClickListener: FriendshipClickListener? = null
init { init {
@ -79,19 +77,6 @@ class UserViewHolder(
locationView.visibility = View.GONE locationView.visibility = View.GONE
urlView.visibility = View.GONE urlView.visibility = View.GONE
countsContainer.visibility = View.GONE countsContainer.visibility = View.GONE
itemView.profileImageContainer.layoutParams.apply {
(this as RelativeLayout.LayoutParams).clearVerticalRules()
this.addRule(RelativeLayout.CENTER_VERTICAL)
}
nameView.layoutParams.apply {
(this as RelativeLayout.LayoutParams).clearVerticalRules()
this.addRule(RelativeLayout.CENTER_VERTICAL)
}
actionsProgressContainer.layoutParams.apply {
(this as RelativeLayout.LayoutParams).clearVerticalRules()
this.addRule(RelativeLayout.CENTER_VERTICAL)
}
} }
} }
@ -112,26 +97,27 @@ class UserViewHolder(
nameView.updateText(adapter.bidiFormatter) nameView.updateText(adapter.bidiFormatter)
if (adapter.profileImageEnabled) { if (adapter.profileImageEnabled) {
profileImageView.visibility = View.VISIBLE profileImageView.setVisible(true)
adapter.requestManager.loadProfileImage(context, user, adapter.profileImageStyle, adapter.requestManager.loadProfileImage(context, user, adapter.profileImageStyle,
profileImageView.cornerRadius, profileImageView.cornerRadiusRatio, profileImageView.cornerRadius, profileImageView.cornerRadiusRatio,
adapter.profileImageSize).into(profileImageView) adapter.profileImageSize).into(profileImageView)
} else { } else {
profileImageView.visibility = View.GONE profileImageView.setVisible(false)
} }
val accountKey = user.account_key val accountKey = user.account_key
val showRelationshipButtons: Boolean
if (accountKey != null && FriendshipPromises.isRunning(accountKey, user.key)) { if (accountKey != null && FriendshipPromises.isRunning(accountKey, user.key)) {
processingRequestProgress.visibility = View.VISIBLE processingRequestProgress.setVisible(true)
actionsContainer.visibility = View.GONE showRelationshipButtons = false
} else { } else {
processingRequestProgress.visibility = View.GONE processingRequestProgress.setVisible(false)
actionsContainer.visibility = View.VISIBLE showRelationshipButtons = true
} }
if (accountKey != null && user.key.hasSameHost(accountKey)) { if (accountKey != null && user.key.hasSameHost(accountKey)) {
externalIndicator.visibility = View.GONE externalIndicator.setVisible(false)
} else { } else {
externalIndicator.visibility = View.VISIBLE externalIndicator.setVisible(true)
externalIndicator.text = context.getString(R.string.external_user_host_format, user.key.host) externalIndicator.text = context.getString(R.string.external_user_host_format, user.key.host)
} }
@ -140,30 +126,26 @@ class UserViewHolder(
val isMySelf = accountKey == user.key val isMySelf = accountKey == user.key
if (requestClickListener != null && !isMySelf) { if (showRelationshipButtons && requestClickListener != null && !isMySelf) {
acceptRequestButton.visibility = View.VISIBLE acceptRequestButton.setVisible(true)
denyRequestButton.visibility = View.VISIBLE denyRequestButton.setVisible(true)
} else { } else {
acceptRequestButton.visibility = View.GONE acceptRequestButton.setVisible(false)
denyRequestButton.visibility = View.GONE denyRequestButton.setVisible(false)
} }
if (friendshipClickListener != null && !isMySelf) { if (showRelationshipButtons && friendshipClickListener != null && !isMySelf) {
if (user.extras?.blocking ?: false) { if (user.extras?.blocking == true) {
followButton.visibility = View.GONE followButton.setVisible(false)
unblockButton.visibility = View.VISIBLE unblockButton.setVisible(true)
} else { } else {
if (showFollow) { followButton.setVisible(showFollow)
followButton.visibility = View.VISIBLE unblockButton.setVisible(false)
} else {
followButton.visibility = View.GONE
} }
unblockButton.visibility = View.GONE unmuteButton.setVisible(user.extras?.muting == true)
}
unmuteButton.visibility = if (user.extras?.muting ?: false) View.VISIBLE else View.GONE
} else { } else {
followButton.visibility = View.GONE followButton.setVisible(false)
unblockButton.visibility = View.GONE unblockButton.setVisible(false)
unmuteButton.visibility = View.GONE unmuteButton.setVisible(false)
} }
if (!simple) { if (!simple) {
@ -223,10 +205,10 @@ class UserViewHolder(
this.friendshipClickListener = friendshipClickListener this.friendshipClickListener = friendshipClickListener
if (requestClickListener != null || friendshipClickListener != null) { if (requestClickListener != null || friendshipClickListener != null) {
nameView.twoLine = true nameView.twoLine = true
actionsProgressContainer.visibility = View.VISIBLE processingRequestProgress.visibility = View.VISIBLE
} else { } else {
nameView.twoLine = false nameView.twoLine = false
actionsProgressContainer.visibility = View.GONE processingRequestProgress.visibility = View.GONE
} }
nameView.updateText() nameView.updateText()
acceptRequestButton.setOnClickListener(this) acceptRequestButton.setOnClickListener(this)

View File

@ -17,7 +17,7 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>. ~ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<org.mariotaku.twidere.view.ColorLabelRelativeLayout <org.mariotaku.twidere.view.ColorLabelConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
@ -31,20 +31,6 @@
app:ignorePadding="true" app:ignorePadding="true"
tools:context=".adapter.ParcelableUsersAdapter"> tools:context=".adapter.ParcelableUsersAdapter">
<RelativeLayout
android:id="@+id/profileImageContainer"
android:layout_width="@dimen/icon_size_card_list_item"
android:layout_height="@dimen/icon_size_card_list_item"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignTop="@+id/actionsProgressContainer"
android:layout_marginEnd="@dimen/element_spacing_normal"
android:layout_marginRight="@dimen/element_spacing_normal"
android:clipChildren="false"
android:clipToPadding="false"
tools:visibility="visible">
<org.mariotaku.twidere.view.ProfileImageView <org.mariotaku.twidere.view.ProfileImageView
android:id="@+id/profileImage" android:id="@+id/profileImage"
style="?profileImageStyle" style="?profileImageStyle"
@ -52,6 +38,8 @@
android:layout_height="@dimen/icon_size_card_list_item" android:layout_height="@dimen/icon_size_card_list_item"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:contentDescription="@string/profile_image" android:contentDescription="@string/profile_image"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_profile_image_twidere"/> tools:src="@drawable/ic_profile_image_twidere"/>
<ImageView <ImageView
@ -61,49 +49,34 @@
android:layout_alignBottom="@+id/profileImage" android:layout_alignBottom="@+id/profileImage"
android:layout_alignEnd="@+id/profileImage" android:layout_alignEnd="@+id/profileImage"
android:layout_alignRight="@+id/profileImage" android:layout_alignRight="@+id/profileImage"
android:layout_marginBottom="@dimen/element_spacing_minus_small"
android:layout_marginEnd="@dimen/element_spacing_minus_normal"
android:layout_marginRight="@dimen/element_spacing_minus_normal"
android:scaleType="centerInside" android:scaleType="centerInside"
app:layout_constraintBottom_toBottomOf="@+id/profileImage"
app:layout_constraintEnd_toEndOf="@+id/profileImage"
tools:ignore="ContentDescription" tools:ignore="ContentDescription"
tools:src="@drawable/ic_user_type_verified" tools:src="@drawable/ic_user_type_verified"
tools:visibility="visible"/> tools:visibility="visible"/>
</RelativeLayout>
<org.mariotaku.twidere.view.NameView <org.mariotaku.twidere.view.NameView
android:id="@+id/name" android:id="@+id/name"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignBottom="@+id/actionsProgressContainer" android:layout_marginLeft="@dimen/element_spacing_normal"
android:layout_alignTop="@+id/actionsProgressContainer" android:layout_marginStart="@dimen/element_spacing_normal"
android:layout_toEndOf="@+id/profileImageContainer"
android:layout_toLeftOf="@+id/actionsProgressContainer"
android:layout_toRightOf="@+id/profileImageContainer"
android:layout_toStartOf="@+id/actionsProgressContainer"
android:gravity="center_vertical" android:gravity="center_vertical"
android:minHeight="@dimen/icon_size_card_list_item"
app:layout_constraintEnd_toStartOf="@+id/actionsProgressBarrier"
app:layout_constraintStart_toEndOf="@+id/profileImage"
app:tltvPrimaryTextColor="?android:textColorPrimary" app:tltvPrimaryTextColor="?android:textColorPrimary"
app:tltvPrimaryTextStyle="bold" app:tltvPrimaryTextStyle="bold"
app:tltvSecondaryTextColor="?android:textColorSecondary" app:tltvSecondaryTextColor="?android:textColorSecondary"
app:tltvTwoLine="true"/> app:tltvTwoLine="true"/>
<FrameLayout <android.support.constraint.Barrier
android:id="@+id/actionsProgressContainer" android:id="@+id/actionsProgressBarrier"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_alignParentEnd="true" app:barrierDirection="start"
android:layout_alignParentRight="true" app:constraint_referenced_ids="unmute,processingRequest"/>
android:clipChildren="false"
android:minHeight="@dimen/button_size_content_card"
android:minWidth="@dimen/button_size_content_card">
<LinearLayout
android:id="@+id/actionsContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:clipChildren="false"
android:orientation="horizontal"
tools:visibility="visible">
<android.support.v7.widget.AppCompatImageButton <android.support.v7.widget.AppCompatImageButton
android:id="@+id/unmute" android:id="@+id/unmute"
@ -112,8 +85,12 @@
android:layout_height="@dimen/button_size_content_card" android:layout_height="@dimen/button_size_content_card"
android:contentDescription="@string/action_follow" android:contentDescription="@string/action_follow"
app:backgroundTint="@color/material_grey" app:backgroundTint="@color/material_grey"
app:layout_constraintBottom_toBottomOf="@+id/name"
app:layout_constraintEnd_toStartOf="@+id/follow"
app:layout_constraintTop_toTopOf="@+id/name"
app:srcCompat="@drawable/ic_action_visibility_off" app:srcCompat="@drawable/ic_action_visibility_off"
app:tint="@android:color/white"/> app:tint="@android:color/white"
tools:visibility="gone"/>
<android.support.v7.widget.AppCompatImageButton <android.support.v7.widget.AppCompatImageButton
android:id="@+id/follow" android:id="@+id/follow"
@ -122,8 +99,12 @@
android:layout_height="@dimen/button_size_content_card" android:layout_height="@dimen/button_size_content_card"
android:contentDescription="@string/action_follow" android:contentDescription="@string/action_follow"
app:backgroundTint="@color/color_stateful_follow" app:backgroundTint="@color/color_stateful_follow"
app:layout_constraintBottom_toBottomOf="@+id/name"
app:layout_constraintEnd_toStartOf="@+id/acceptRequest"
app:layout_constraintTop_toTopOf="@+id/name"
app:srcCompat="@drawable/ic_action_add" app:srcCompat="@drawable/ic_action_add"
app:tint="@android:color/black"/> app:tint="@android:color/black"
tools:visibility="visible"/>
<android.support.v7.widget.AppCompatImageButton <android.support.v7.widget.AppCompatImageButton
android:id="@+id/acceptRequest" android:id="@+id/acceptRequest"
@ -132,8 +113,12 @@
android:layout_height="@dimen/button_size_content_card" android:layout_height="@dimen/button_size_content_card"
android:contentDescription="@string/action_accept_friend_request" android:contentDescription="@string/action_accept_friend_request"
app:backgroundTint="@color/material_light_green" app:backgroundTint="@color/material_light_green"
app:layout_constraintBottom_toBottomOf="@+id/name"
app:layout_constraintEnd_toStartOf="@+id/denyRequest"
app:layout_constraintTop_toTopOf="@+id/name"
app:srcCompat="@drawable/ic_action_confirm" app:srcCompat="@drawable/ic_action_confirm"
app:tint="@android:color/white"/> app:tint="@android:color/white"
tools:visibility="gone"/>
<android.support.v7.widget.AppCompatImageButton <android.support.v7.widget.AppCompatImageButton
android:id="@+id/denyRequest" android:id="@+id/denyRequest"
@ -142,8 +127,12 @@
android:layout_height="@dimen/button_size_content_card" android:layout_height="@dimen/button_size_content_card"
android:contentDescription="@string/deny" android:contentDescription="@string/deny"
app:backgroundTint="@color/material_red" app:backgroundTint="@color/material_red"
app:layout_constraintBottom_toBottomOf="@+id/name"
app:layout_constraintEnd_toStartOf="@+id/unblock"
app:layout_constraintTop_toTopOf="@+id/name"
app:srcCompat="@drawable/ic_action_cancel" app:srcCompat="@drawable/ic_action_cancel"
app:tint="@android:color/white"/> app:tint="@android:color/white"
tools:visibility="gone"/>
<android.support.v7.widget.AppCompatImageButton <android.support.v7.widget.AppCompatImageButton
android:id="@+id/unblock" android:id="@+id/unblock"
@ -152,10 +141,12 @@
android:layout_height="@dimen/button_size_content_card" android:layout_height="@dimen/button_size_content_card"
android:contentDescription="@string/deny" android:contentDescription="@string/deny"
app:backgroundTint="@color/material_red" app:backgroundTint="@color/material_red"
app:layout_constraintBottom_toBottomOf="@+id/name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/name"
app:srcCompat="@drawable/ic_action_block" app:srcCompat="@drawable/ic_action_block"
app:tint="@android:color/white"/> app:tint="@android:color/white"
tools:visibility="gone"/>
</LinearLayout>
<ProgressBar <ProgressBar
android:id="@+id/processingRequest" android:id="@+id/processingRequest"
@ -163,120 +154,137 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:visibility="gone"/> android:visibility="visible"
app:layout_constrainedWidth="true"
</FrameLayout> app:layout_constraintBottom_toBottomOf="@+id/name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/name"
app:layout_constraintWidth_min="@dimen/button_size_content_card"/>
<org.mariotaku.twidere.view.FixedTextView <org.mariotaku.twidere.view.FixedTextView
android:id="@+id/externalIndicator" android:id="@+id/externalIndicator"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/name"
android:layout_alignStart="@+id/name"
android:layout_below="@+id/name"
android:paddingTop="@dimen/element_spacing_small" android:paddingTop="@dimen/element_spacing_small"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textStyle="italic" android:textStyle="italic"
tools:text="External user at twitter.com"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/name"
app:layout_constraintTop_toBottomOf="@+id/name"
tools:text="External user at twitter.com"
tools:visibility="gone"/>
<org.mariotaku.twidere.view.FixedTextView <org.mariotaku.twidere.view.FixedTextView
android:id="@+id/description" android:id="@+id/description"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/name"
android:layout_alignStart="@+id/name"
android:layout_below="@+id/externalIndicator"
android:paddingTop="@dimen/element_spacing_small" android:paddingTop="@dimen/element_spacing_small"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
tools:text="@string/sample_status_text"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/name"
app:layout_constraintTop_toBottomOf="@+id/externalIndicator"
tools:text="@string/sample_status_text"
tools:visibility="gone"/>
<org.mariotaku.twidere.view.DrawableTintTextView <org.mariotaku.twidere.view.DrawableTintTextView
android:id="@+id/location" android:id="@+id/location"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/name" android:drawableLeft="@drawable/ic_label_location"
android:layout_alignStart="@+id/name"
android:layout_below="@+id/description"
android:drawableLeft="@drawable/ic_indicator_location"
android:drawablePadding="@dimen/element_spacing_small" android:drawablePadding="@dimen/element_spacing_small"
android:drawableStart="@drawable/ic_indicator_location" android:drawableStart="@drawable/ic_label_location"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1" android:maxLines="1"
android:paddingTop="@dimen/element_spacing_small" android:paddingTop="@dimen/element_spacing_small"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
app:drawableTint="?android:textColorSecondary" app:drawableTint="?android:textColorSecondary"
tools:text="Earth"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/name"
app:layout_constraintTop_toBottomOf="@+id/description"
tools:text="Earth"
tools:visibility="gone"/>
<org.mariotaku.twidere.view.DrawableTintTextView <org.mariotaku.twidere.view.DrawableTintTextView
android:id="@+id/url" android:id="@+id/url"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignLeft="@+id/name" android:drawableLeft="@drawable/ic_label_web"
android:layout_alignStart="@+id/name"
android:layout_below="@+id/location"
android:drawableLeft="@drawable/ic_indicator_web"
android:drawablePadding="@dimen/element_spacing_small" android:drawablePadding="@dimen/element_spacing_small"
android:drawableStart="@drawable/ic_indicator_web" android:drawableStart="@drawable/ic_label_web"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1" android:maxLines="1"
android:paddingTop="@dimen/element_spacing_small" android:paddingTop="@dimen/element_spacing_small"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
app:drawableTint="?android:textColorSecondary" app:drawableTint="?android:textColorSecondary"
tools:text="https://github.com/TwidereProject"/> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/name"
<LinearLayout app:layout_constraintTop_toBottomOf="@+id/location"
android:id="@+id/countsContainer" tools:text="https://github.com/TwidereProject"
android:layout_width="match_parent" tools:visibility="gone"/>
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/name"
android:layout_alignStart="@+id/name"
android:layout_below="@+id/url"
android:orientation="horizontal"
android:paddingTop="@dimen/element_spacing_small">
<org.mariotaku.twidere.view.DrawableTintTextView <org.mariotaku.twidere.view.DrawableTintTextView
android:id="@+id/statusesCount" android:id="@+id/statusesCount"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_indicator_twitter" android:drawableLeft="@drawable/ic_indicator_twitter"
android:drawablePadding="@dimen/element_spacing_small" android:drawablePadding="@dimen/element_spacing_small"
android:drawableStart="@drawable/ic_indicator_twitter" android:drawableStart="@drawable/ic_indicator_twitter"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:padding="@dimen/element_spacing_small"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
app:drawableTint="?android:textColorSecondary" app:drawableTint="?android:textColorSecondary"
app:layout_constraintEnd_toStartOf="@+id/followersCount"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="@+id/name"
app:layout_constraintTop_toBottomOf="@+id/url"
tools:text="255"/> tools:text="255"/>
<org.mariotaku.twidere.view.DrawableTintTextView <org.mariotaku.twidere.view.DrawableTintTextView
android:id="@+id/followersCount" android:id="@+id/followersCount"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_indicator_followers" android:drawableLeft="@drawable/ic_indicator_followers"
android:drawablePadding="@dimen/element_spacing_small" android:drawablePadding="@dimen/element_spacing_small"
android:drawableStart="@drawable/ic_indicator_followers" android:drawableStart="@drawable/ic_indicator_followers"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:padding="@dimen/element_spacing_small"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
app:drawableTint="?android:textColorSecondary" app:drawableTint="?android:textColorSecondary"
app:layout_constraintEnd_toStartOf="@+id/friendsCount"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toEndOf="@+id/statusesCount"
app:layout_constraintTop_toBottomOf="@+id/url"
tools:text="255"/> tools:text="255"/>
<org.mariotaku.twidere.view.DrawableTintTextView <org.mariotaku.twidere.view.DrawableTintTextView
android:id="@+id/friendsCount" android:id="@+id/friendsCount"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_indicator_following" android:drawableLeft="@drawable/ic_indicator_following"
android:drawablePadding="@dimen/element_spacing_small" android:drawablePadding="@dimen/element_spacing_small"
android:drawableStart="@drawable/ic_indicator_following" android:drawableStart="@drawable/ic_indicator_following"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:padding="@dimen/element_spacing_small"
android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceSmall"
app:drawableTint="?android:textColorSecondary" app:drawableTint="?android:textColorSecondary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toEndOf="@+id/followersCount"
app:layout_constraintTop_toBottomOf="@+id/url"
tools:text="255"/> tools:text="255"/>
</LinearLayout>
</org.mariotaku.twidere.view.ColorLabelRelativeLayout> <android.support.constraint.Group
android:id="@+id/countsContainer"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="statusesCount,followersCount,friendsCount"
tools:visibility="gone"/>
</org.mariotaku.twidere.view.ColorLabelConstraintLayout>