Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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_Android Styles_Android Cardview - Fatal编程技术网

Android 以编程方式创建CardView无法正确应用样式

Android 以编程方式创建CardView无法正确应用样式,android,android-styles,android-cardview,Android,Android Styles,Android Cardview,我正在尝试从代码创建一个cardwiew。但是,它似乎没有正确地应用样式。以下是样式: <style name="CardViewStyle" parent="CardView"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item

我正在尝试从代码创建一个
cardwiew
。但是,它似乎没有正确地应用样式。以下是样式:

<style name="CardViewStyle" parent="CardView">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">8dp</item>
</style>

<style name="Widget.CardContent" parent="android:Widget">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:paddingLeft">16dp</item>
    <item name="android:paddingRight">16dp</item>
    <item name="android:paddingTop">24dp</item>
    <item name="android:paddingBottom">24dp</item>
    <item name="android:orientation">vertical</item>
</style>
以下是结果。在此图像中,第一个CardView是由XML创建的。第二个CardView是以编程方式创建的。第二个属性似乎不仅适用于
parent=“cardwiew”
,因为其他属性(布局宽度、布局高度、布局边距)已正确应用


出于某种原因,设置边距会使整个过程重新开始

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
);
int margin = dpToPixel(8);
params.setMargins(margin, margin, margin, margin);
card.setLayoutParams(params);

我也有类似的问题,这对我有帮助:


我将
null
作为CardView的父级传递给
View.inflate()
,这意味着xml
layout\u marginLeft
etc参数被忽略。

类似的建议,因此答案最好作为注释。如果问题重复,则应将其中一个标记为结束。
CardView card = new CardView(new ContextThemeWrapper(MyActivity.this, R.style.CardViewStyle), null, 0);
LinearLayout cardInner = new LinearLayout(new ContextThemeWrapper(MyActivity.this, R.style.Widget_CardContent));

TextView tv_title = new TextView(this);
tv_title.setLayoutParams(new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT
));
tv_title.setTextAppearance(this, R.style.TextAppearance_AppCompat_Title);
tv_title.setText("Name");

TextView tv_caption = new TextView(this);
tv_caption.setLayoutParams(new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT
));
tv_caption.setText("Sus");

cardInner.addView(tv_title);
cardInner.addView(tv_caption);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
);
int margin = dpToPixel(8);
params.setMargins(margin, margin, margin, margin);
card.setLayoutParams(params);