Android 以编程方式在线性布局中居中CardView
Android 以编程方式在线性布局中居中CardView,android,textview,android-cardview,cardview,Android,Textview,Android Cardview,Cardview,此cardview拥抱侧面,无论我如何改变布局重力,卡都不会移动。我可以在左侧设置填充,使其看起来居中,但在不同大小的屏幕上,它不会完全居中您正在创建相对布局参数,并将其用于线性布局和卡片视图(这是一种框架布局)。这不太可能奏效。据我所知,对于要添加到线性布局中的视图,应该使用例如LinearLayout.LayoutParams(经验法则:使用LayoutParams以父视图视图组命名) 为了使cardwiew居中,必须以编程方式设置其android:layout\u gravity属性: p
此cardview拥抱侧面,无论我如何改变布局重力,卡都不会移动。我可以在左侧设置填充,使其看起来居中,但在不同大小的屏幕上,它不会完全居中您正在创建
相对布局参数
,并将其用于线性布局
和卡片视图
(这是一种框架布局
)。这不太可能奏效。据我所知,对于要添加到线性布局
中的视图
,应该使用例如LinearLayout.LayoutParams
(经验法则:使用LayoutParams
以父视图视图组
命名)
为了使cardwiew
居中,必须以编程方式设置其android:layout\u gravity
属性:
public void makeCard( Context context, View view, String time, String startpt1, String startpt2, String endpt1, String endpt2)
{
CardView card = new CardView(context);
LinearLayout ll = view.findViewById(R.id.rides);
// Set the CardView layoutParams
int w = getResources().getDimensionPixelSize(R.dimen._270sdp);
int h = getResources().getDimensionPixelSize(R.dimen._120sdp);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(w, h);
card.setForegroundGravity(17);
card.setLayoutParams(params);
card.setRadius(60);
card.setCardElevation(60);
Typeface latoregular = getResources().getFont(R.font.latoregular);
Typeface latobold = getResources().getFont(R.font.latobold);
// Initialize a new TextView to put in CardView
TextView tv = new TextView(context);
tv.setLayoutParams(params);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
try {
Date date = format.parse(time);
tv.setText(date.toString());
Log.d("ASD", String.valueOf(date));
} catch (ParseException e) {
e.printStackTrace();
}
tv.setTextSize(14);
tv.setPadding(60,40,0,0);
tv.setTextColor(Color.parseColor("#1fb286"));
tv.setTypeface(latobold);
tv.setTypeface(tv.getTypeface(), Typeface.BOLD);
card.addView(tv);
ll.addView(card);
}
您正在创建RelativeLayout.LayoutParams,并将其用于LinearLayout和CardView(这是一种框架布局)。这不太可能奏效。据我所知,对于要添加到LinearLayout的视图,应该使用例如LinearLayout.LayoutParams。是的,这是我的错误。我将其更改为LinearLayout.LayoutParams,但没有名为addRule的类函数(它仅适用于RelativeLayout),所以我将使用什么来居中它?也许是有帮助的是的,这很有效!谢谢是否要将其添加为答案?LinearLayout.LayoutParams params=新的LinearLayout.LayoutParams(w,h);参数重力=重心;是什么修好的
int w = getResources().getDimensionPixelSize(R.dimen._270sdp);
int h = getResources().getDimensionPixelSize(R.dimen._120sdp);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(w, h);
params.gravity = Gravity.CENTER;