gpt4 book ai didi

android - 在 RelativeLayout 中水平居中 RecyclerView

转载 作者:行者123 更新时间:2023-11-30 00:19:28 25 4
gpt4 key购买 nike

我正在尝试将我的水平 RecyclerView 设置在 RelativeLayout 的中心。但是有些列表项如我所愿地居中,有些则没有设置为居中。看起来像这样。 enter image description here

我的 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());
}
}
}
}

您可以看到前两项放在中心,最后两项也放在中心,但第三项在顶部而不是中心。如果有人想更正它,请告诉我。

编辑当我滚动项目并点击项目时,它在中心的设置是正确的。

谢谢

最佳答案

更改 android:layout_height="@dimen/toolbar"

到 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" />

这应该可以解决问题。

关于android - 在 RelativeLayout 中水平居中 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46570484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com