我想插入一個RecyclerView ItemDecorator分隔線,左對齊列表元素中的父級左側約束爲72dp的TextView(項目標題)。就像我們在Google Material Design Docs中看到here一樣。我假設我需要以某種方式引用titleTextView上的佈局參數,但我不確定如何從我的ItemDecorator代碼執行該操作,因爲我似乎只能獲得ConstraintLayout的參數,而不是textview本身。任何幫助或指針在正確的方向將不勝感激!相關ItemDecorator代碼,在那裏我試圖讓TextView的PARAM看起來是這樣的:Android RecyclerView ItemDecorator:將插入分隔線與列表項對齊TextView
for (int i = 0; i < recyclerView.getChildCount() - 1; ++i) {
View child = recyclerView.getChildAt(i);
RecyclerView.LayoutParams params =(RecyclerView.LayoutParams) child.getLayoutParams();
//this just gives me the constraint layout, not the TextView params, how to reference the textViewParams!?
的RecyclerView看起來是這樣的:
<android.support.v7.widget.RecyclerView
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/myList"
android:name="com.example.Something"
android:layout_width="0dp"
android:layout_height="0dp"
app:layoutManager="LinearLayoutManager"
tools:context=".controllers.fragments.ExampleFragment"
tools:listitem="@layout/fragment_something"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
列表項XML是一種約束佈局一些TextViews,並且相關部分如下所示:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="72dp">
<ImageView
android:id="@+id/myImageView"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginLeft="16dp"
app:layout_constraintLeft_toLeftOf="parent"
tools:src="@drawable/ic_menu_manage"
android:src="@drawable/ic_menu_manage"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="16dp" />
<TextView
android:id="@+id/titleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="72dp"
android:layout_marginTop="20dp"
android:text="MyTitle"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/textView5"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="SampleTitle" />
...
</android.support.constraint.ConstraintLayout>
嗨Arutha,感謝您的回覆。我所擁有的基本上就是你寫的東西,除了你在那裏寫了「改變你想在這裏填充多少內容」,那就是我想在textview中引用填充的地方。不知道如何訪問? – bryant
parent是recyclerview,所以你可以從那裏獲得視圖, val item = parent.getchildat(0) val textview = item.getchild(x)as textview 然後你可以使用textviews的data/layout參數來獲得什麼你需要 是不是在textview上的填充是靜態的?你之前在72dp的xml中寫過嗎?只需用72 * getDpi()更改paddingleft部分(某些函數將72轉換爲dpi) – Arutha