Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式在线性布局中居中CardView_Android_Textview_Android Cardview_Cardview - Fatal编程技术网

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;