我遇到了RecyclerView的一些非常奇怪的行爲,它是關於在一行RecyclerView內錨定和對齊視圖。因此,這裏是從行的結果應該是什麼樣子:RecyclerView裏面的內容越來越亂了
這並不總是發生。有時候,裏面的視圖會像上面附加的圖像那樣混亂,有時不是。反正這裏是顯示排佈置的樣子我的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout android:id="@+id/background"
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="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_margin="24dp"
android:id="@+id/iv_user_icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_zelena_bez_lopte"
app:civ_border="true"
app:civ_border_color="@color/colorAccent"
app:civ_border_width="1dp"
app:civ_shadow="true"
app:civ_shadow_color="@android:color/black"
app:civ_shadow_radius="10"/>
<LinearLayout
android:id="@+id/username_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/iv_user_icon"
android:layout_alignTop="@+id/iv_user_icon"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:layout_toEndOf="@+id/iv_user_icon"
android:layout_toRightOf="@+id/iv_user_icon"
android:gravity="center|start"
android:orientation="vertical">
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mr.Bean"
android:textColor="@android:color/white"
android:textSize="12sp"
android:typeface="sans"/>
<TextView
android:id="@+id/tv_city_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:textColor="@color/colorAccent"
android:textSize="12sp"
android:typeface="sans"/>
</LinearLayout>
<ImageView
android:id="@+id/iv_option"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignBottom="@+id/iv_user_icon"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/iv_user_icon"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:background="@null"
android:src="@drawable/ic_message"/>
<View
android:id="@+id/lst_item_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignLeft="@+id/username_container"
android:layout_alignStart="@+id/username_container"
android:layout_below="@+id/username_container"
android:background="@color/main_text_color"/>
</RelativeLayout>
<ImageView
android:visibility="visible"
app:layout_anchor="@+id/iv_user_icon"
app:layout_anchorGravity="bottom|center|end|right"
android:src="@drawable/icon"
android:id="@+id/iv_star"
android:layout_width="30dp"
android:layout_height="30dp"/>
</android.support.design.widget.CoordinatorLayout>
我在做內部適配器一些隱藏的觀點,當我需要,也許這是一個問題,我真的不知道。在嘗試檢查適配器內的某些條件時,我嘗試了隱藏視圖,但結果相同。只是爲了解釋,我隱藏了收件箱圖標,因爲如果我的用戶名顯示在列表中,我想隱藏它,因爲我不想發送自己的消息,並且此徽章圖標將僅顯示給一個用戶。
下面是從適配器代碼:
@Override
public void onBindViewHolder(final TeamMembersListAdapter.HeaderViewHolder holder, int position) {
final User user = teamUsers.get(position);
Glide.with(mContext)
.load(Uri.parse(user.getImage()))
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.placeholder(R.drawable.ic_zelena_bez_lopte)
.error(R.drawable.ic_zelena_bez_lopte)
.dontAnimate()
.into(holder.profileImage);
String selfUserId = AppController.getInstance().getDatabase().getUserDetails().get("user_id");
if (user.getCreatorId() == Integer.parseInt(user.getId())) {
holder.ivBadge.setVisibility(View.VISIBLE);
} else {
holder.ivBadge.setVisibility(View.INVISIBLE);
}
if (selfUserId.equals(user.getId())) {
holder.ivSendMessage.setVisibility(View.INVISIBLE);
} else {
holder.ivSendMessage.setVisibility(View.VISIBLE);
}
holder.tvUsername.setText(user.getName());
holder.tvCityName.setText(user.getCity());
holder.bgContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mOnItemClickListener.onItemClickListener(holder.getAdapterPosition());
}
});
}
你好Patryk,我需要CoordinatorLayout是因爲我需要在圓形圖像這個徽章圖標的右下角角度對準的原因,我發現了一個方法來做到這一點與CoordinatorLayout使用錨選項。 –
這真是明智的答案,並幫助我。謝謝 –