2017-09-20 5 views
0

をバインドするとき、私は以下のようなRelativeLayoutの内側TextViewを持っているのTextViewの余白を変更する:私<strong>レイアウト</strong>でビュー

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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="80dp" 
    android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/textView17" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="70dp" 
     android:layout_marginStart="70dp" 
     android:layout_marginTop="12dp" 
     android:layout_toLeftOf="@+id/imageButton2" 
     android:layout_toStartOf="@+id/imageButton2" 
     android:text="TextView" 
     android:textColor="@android:color/black" 
     android:textSize="24sp" 
     android:textStyle="bold" /> 

left marginsは、明示的にこの場合には70dpに設定されています。しかし、left marginを条件付きで30dpに減らしたいと思います。私の試みはここにあります:

@Override 
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) { 
    final Material m = ... 
    ViewHolder h = (ViewHolder) holder; 

    h.checkedImageview.setVisibility(View.GONE); 

    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) h.titleTextview.getLayoutParams(); 
    layoutParams.setMargins(
      20, 
      layoutParams.topMargin, 
      layoutParams.rightMargin, 
      layoutParams.bottomMargin 
    ); 
    h.titleTextview.setLayoutParams(layoutParams); 

^^しかし、それはまったく効果がありません。 XMLレイアウトの値を変更しても問題なく動作しますか?私は間違って何をしていますか?私はSectionedRecyclerViewAdapterRecyclerViewライブラリを使用しています。例えば

答えて

0

public static class PersonViewHolder extends RecyclerView.ViewHolder { 

CardView cv; 
TextView personName; 
TextView personAge; 
ImageView personPhoto; 

PersonViewHolder(View itemView) { 
    super(itemView); 
    cv = (CardView)itemView.findViewById(R.id.cv); 
    personName = (TextView)itemView.findViewById(R.id.person_name); 
    personAge = (TextView)itemView.findViewById(R.id.person_age); 
    personPhoto = (ImageView)itemView.findViewById(R.id.person_photo); 
} 

}

ので、私はそれを行うGitのハブページフストをお読みください。

@Override 
public void onBindItemViewHolder(PersonViewHolder holder, int position) { 

    //here --->>> 
    PersonViewHolder itemHolder = (PersonViewHolder) holder; // important ! 

    holder.checkedImageview.setVisibility(View.GONE); 

    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) holder.titleTextview.getLayoutParams(); 
    layoutParams.setMargins(
      20, 
      layoutParams.topMargin, 
      layoutParams.rightMargin, 
      layoutParams.bottomMargin 
    ); 
    holder.titleTextview.setLayoutParams(layoutParams); 
0

問題は、あなたがから既存のLayoutParamsを再利用しているということですテキストビュー。再利用する代わりに、新しいRelativeLayout.LayoutParamsオブジェクトを作成し、マージンを設定して、TextViewのパラメータを適切に設定します。コード:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams 
    (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 

params.setMargins(0, 0, 0, 0); // or any other values 

textView.setLayoutParams(params); 
関連する問題

 関連する問題