Android Recycler View는 item 너비가 화면을 채울 수 없음을 해결합니다(부모 컨테이너 매개 변수가 없어도 됨).

5283 단어 질문
인터넷에서 RecyclerView의 item 충전 화면을 어떻게 해결하는지에 관한 글을 많이 보았지만, 본 글들은 거의 방법이 똑같아서 여전히 나의 문제를 해결할 수 없었다.그러나 그렇게 많은 글을 본 후에 마침내 한 문장에서 영감을 얻었다. 주소는 RecyclerView Item의 구조가 넓고 무효한 문제 탐구이다.이 글은 왜 item이 화면을 채울 수 없는지를 탐구했다.작가님 감사합니다!쓸데없는 말은 그만하고 본론으로 들어갈게요.우리가 레이아웃을 얻을 때 inflate 방법을 사용하는 것이 틀림없다. 이 방법은 네 가지 재부팅 방법이 있는데 일반적으로 내가 비교적 많이 사용하는 것은 바로.inflate(R.layout.xx, parent, false);및.flate(R.layout.xx,null) 두 가지 방법은 item이 화면 폭을 채울 수 없을 때 바로 두 번째 방법을 사용했다. 그래서 나는 첫 번째 방법을 테스트하여 문제를 해결했다.보통 제가 Recycler View를 사용할 때 Item의 레이아웃에 문제가 생기면 두 가지 방법을 모두 시도해 봤습니다. (전제는 레이아웃에 문제가 없다는 것) 일반적으로 모두 해결할 수 있지만 오늘 제가 Recycler View에 HeaderView를 추가하려고 할 때 HeaderView가 화면 폭을 채우지 못하는 상황이 발생했습니다.나는 위에서 언급한 방법 중의 두 번째 방법만 사용할 수 있다. 왜냐하면 나는 부모 용기를 어떻게 얻는지 모르기 때문이다. 구체적인 코드는 다음과 같다.
public void setFooterView(int resId) {
        this.headerView=LayoutInflater.from(mContext).inflate(resId,null);
        notifyItemInserted(0);
    }
            ,     ,            ,              ,   ,    .inflate(R.layout.xx,null)    ,     ,          wrap_content (                )。    xml                。                   。    :
       :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/grey"
    android:orientation="vertical">


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/middle_margin"
        android:layout_marginTop="@dimen/small_marginII"
        android:text="    "
        android:textColor="@color/black"
        android:textSize="@dimen/bigII_text_size" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_hotCity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/middle_margin"
        android:layout_marginRight="@dimen/middle_margin"
        android:layout_marginTop="@dimen/small_marginII">

    android.support.v7.widget.RecyclerView>

    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:layout_marginBottom="@dimen/small_margin"
        android:layout_marginTop="@dimen/small_margin"
        android:background="@color/textgrey" />

LinearLayout>    

이 코드에서 여러분은 끝에 있는 View를 볼 수 있습니다. 문제를 해결하는 관건은 바로 이 View 위에 있습니다.내 생각은: 넌 어쨌든 wrap콘텐츠, 그럼 내가 너를 매치까지 버틸게parent, 그래서 나는 View의 너비를 match 로 설정했다.parent, 다시 실행합니다. 제 헤드뷰를 채울 수 있습니다.이로써 나의 문제를 해결하였다.왜 제 위에 있는 textView가match 인지 의문이 있으신가 봐요.parent가 왜 채워지지 않는지 구체적으로 저도 잘 모르겠지만 글씨체가 차지하는 폭만 측정해서 이런 효과가 있을 것 같아요.이것은 내가 현재 알고 있는 방법이니, 정신을 가다듬지 마라. 만약 누가 더 좋은 방법이 있으면 알려주기를 바란다. 감격해 마지 않을 것이다.

좋은 웹페이지 즐겨찾기