Reputation: 1632
I am trying to set my horizontal RecyclerView in center of RelativeLayout. But some of list items get center as I want and some of them are not set to center. It looks like this.
My XML is looking like this
<?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>
My Child Item XML is like this
<?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>
My Java Code for it is like below
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);
}
});
}
}
Adapter Java codes
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());
}
}
}
}
You can see that the first two items put in center as well last two items also in center, but the third one is on top instead of center. Let me know if someone have idea to correct it.
EDIT its setting in center correct when I scroll items and tap on item.
Thanks
Upvotes: 1
Views: 2084
Reputation: 1112
change android:layout_height="@dimen/toolbar"
to android: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" />
this should be fixing the problem.
Upvotes: 1
Reputation: 18276
For RelativeLayout the gravity attribute is set by:
android:layout_centerInParent="true"
Upvotes: 0