2017-10-04 83 views
0

我想在RelativeLayout的中心设置我的水平RecyclerView。但是一些列表项目会根据我的需要得到中心,而其中一些项目并未设置为中心。它看起来像这样。 enter image description here中心水平RecyclerView在RelativeLayout

我的XML是这样看

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:background="?attr/colorPrimaryDark" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <TextView 
     android:textColor="?attr/TextColor" 
     android:layout_width="wrap_content" 
     android:layout_height="@dimen/toolbar" 
     android:text="=: Change Your Font :=" 
     android:textStyle="bold" 
     android:layout_centerHorizontal="true" 
     android:gravity="center" 
     android:textSize="@dimen/appName" 
     android:id="@+id/title" 
     android:padding="@dimen/lblTime" /> 

    <LinearLayout 
     android:background="?attr/TextColor" 
     android:orientation="vertical" 
     android:layout_below="@+id/title" 
     android:layout_above="@+id/dialog_dismiss" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_marginTop="2dp" 
      android:layout_weight="7"> 


      <TextView 
       android:scrollbars="vertical" 
       android:id="@+id/font_text_quote" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:autoLink="web" 
       android:linksClickable="true" 
       android:gravity="center" 
       android:layout_centerVertical="true" 
       android:padding="10dp" 
       android:text="@string/sample" 
       android:textColor="?attr/colorPrimaryDark" 
       android:textSize="@dimen/newMainText" 
       android:textStyle="bold" /> 
     </RelativeLayout> 

     <RelativeLayout 
      android:layout_gravity="center" 
      android:background="?attr/colorPrimary" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_marginTop="2dp" 
      android:layout_weight="1"> 

     <android.support.v7.widget.RecyclerView 
      android:layout_marginLeft="10dp" 
      android:layout_marginStart="10dp" 
      android:id="@+id/hsv_font_bartextview" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/toolbar" 
      android:layout_gravity="center" 
      android:visibility="visible" /> 
     </RelativeLayout> 

    </LinearLayout> 




    <TextView 
     android:id="@+id/dialog_dismiss" 
     android:layout_width="wrap_content" 
     android:layout_height="@dimen/toolbar" 
     android:text="Dismiss" 
     android:textStyle="bold" 
     android:textColor="?attr/TextColor" 
     android:padding="@dimen/lblTime" 
     android:textSize="@dimen/appName" 
     android:gravity="center" 
     android:layout_marginEnd="@dimen/lblTime" 
     android:layout_marginRight="@dimen/lblTime" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true"/> 

</RelativeLayout> 

我的子项XML是这样

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    style="@style/SelectableItemBackground" 
    android:gravity="center" 
    android:orientation="vertical" 
    > 
<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/cardView" 
    android:layout_gravity="center_vertical" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginStart="10dp"> 


    <TextView 
     android:id="@+id/textView" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:layout_gravity="center_vertical" 
     android:background="?attr/TextColor" 
     android:gravity="center" 
     android:text="hello" 
     android:textColor="?attr/colorPrimaryDark" 
     android:textSize="21sp" 
     android:visibility="visible" /> 

</android.support.v7.widget.CardView> 
    </LinearLayout> 

我的Java代码它像下面

private void showGotoPageDialog() { 

     Typeface font = Typeface.createFromAsset(SettingsActivity.this.getAssets(), constant.font); 
     final Dialog mDialog = new Dialog(SettingsActivity.this); 
     mDialog.setContentView(R.layout.font_dialogue); 
     mDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     LinearLayoutManager layoutManager 
       = new LinearLayoutManager(SettingsActivity.this, LinearLayoutManager.HORIZONTAL, false); 
     hsv_font_bartextview= mDialog.findViewById(R.id.hsv_font_bartextview); 
     hsv_font_bartextview.setLayoutManager(layoutManager); 

     final TextView font_text_quote; 
     TextAdapterTextview textAdaptertextview = new TextAdapterTextview(SettingsActivity.this, Globle.getFontArray()); 
     hsv_font_bartextview.setAdapter(textAdaptertextview); 

     font_text_quote= mDialog.findViewById(R.id.font_text_quote); 
     font_text_quote.setTypeface(font); 
     textAdaptertextview.setOnClickLIstner(new OnTClickLIstner() { 
      @Override 
      public void onClick(View v, String image, int position) { 
       constant.font=image; 
       Typeface newfont = Typeface.createFromAsset(SettingsActivity.this.getAssets(), constant.font); 
       font_text_quote.setTypeface(newfont); 

      } 
     }); 

     mDialog.show(); 
     TextView dismiss = (TextView) mDialog.findViewById(R.id.dialog_dismiss); 
     dismiss.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       mDialog.dismiss(); 
       Intent intent = new Intent(SettingsActivity.this, HomeActivity.class); 
       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(intent); 
      } 
     }); 
    } 

} 

适配器的Java代码

public class TextAdapterTextview extends RecyclerView.Adapter<TextAdapterTextview.MyViewHolder> { 

    public OnTClickLIstner onClickLIstner; 
    Activity activity; 
    private ArrayList<String> dataSet; 

    public TextAdapterTextview(Activity activity, ArrayList<String> data) { 
     this.dataSet = data; 
     this.activity = activity; 
    } 

    public void setOnClickLIstner(OnTClickLIstner onClickLIstner) { 
     this.onClickLIstner = onClickLIstner; 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, 
              int viewType) { 
     View view = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.text_view_raw_text, parent, false); 
     //view.setOnClickListener(MainActivity.myOnClickListener); 

     MyViewHolder myViewHolder = new MyViewHolder(view); 
     return myViewHolder; 
    } 

    @Override 
    public void onBindViewHolder(final MyViewHolder holder, final int listPosition) { 
     holder.textView.setText(Globle.getfontnames().get(listPosition)); 
     holder.textView.setTypeface(Typeface.createFromAsset(activity.getAssets(), dataSet.get(listPosition))); 
    } 

    @Override 
    public int getItemCount() { 
     return dataSet.size(); 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

     TextView textView; 

     public MyViewHolder(View itemView) { 
      super(itemView); 
      textView = (TextView) itemView.findViewById(R.id.textView); 
      itemView.setOnClickListener(this); 
     } 


     @Override 
     public void onClick(View v) { 
      if (onClickLIstner != null) { 
       onClickLIstner.onClick(v, dataSet.get(getAdapterPosition()), getAdapterPosition()); 
      } 
     } 
    } 
} 

您可以看到,前两项放在中间,最后两项也放在中间,但第三项放在中间而不放在中间。让我知道是否有人有想法纠正它。

编辑 当我滚动物品并点击物品时,其中心设置正确。

由于

+2

此问题与activity/fragment布局错误无关,请设置recyclerview项目布局,recyclerView Adapter和onCreate中启动recyclerview的代码以帮助您 这些信息不足以解决问题 –

+0

@AmjadOmari我已经添加了与它相关的java代码。请检查它 – Priya

+1

和适配器代码请在哪里? –

回答

1

变化机器人:layout_height = “@扪/工具栏”

到机器人:layout_height = “match_parent”

<android.support.v7.widget.RecyclerView 
      android:layout_marginLeft="10dp" 
      android:layout_marginStart="10dp" 
      android:id="@+id/hsv_font_bartextview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:visibility="visible" /> 

这应该是解决问题。

+0

是的,先生!它已经解决了这个问题,并非常感谢您的帮助即使使用TeamViewer也能发现问题。您真是太棒了:) – Priya

0

对于RelativeLayout的重力的属性是由设置:

android:layout_centerInParent="true" 
+0

请检查我编辑的问题先生 – Priya