Android:如何在设置背景可绘制时保持角半径?

时间:2015-07-22 08:47:11

标签: android material-design android-cardview

<android.support.v7.widget.CardView 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:card_view="http://schemas.android.com/apk/res-auto"
  android:id="@+id/card_view"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_margin="@dimen/activity_vertical_margin"
  card_view:cardCornerRadius="12dp"
  card_view:cardElevation="12dp">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    .....

</android.support.v7.widget.CardView>

这是我在layout.xml中设置的

我想在运行时以编程方式更改卡的背景。

CardView card =(CardView) findViewById(R.id.card_view);
card.setBackgroundResource(R.drawable.card1);

这会将所有半径角设置为0dp。我想保持半径和背景可绘制。

2 个答案:

答案 0 :(得分:1)

您可以为CardView之类的布局设置后台资源,而不是cardview

<android.support.v7.widget.CardView 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:card_view="http://schemas.android.com/apk/res-auto"
  android:id="@+id/card_view"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_margin="@dimen/activity_vertical_margin"
  card_view:cardCornerRadius="12dp"
  card_view:cardElevation="12dp">

    <LinearLayout
        android:id="@+id/myLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            .....
    </LinearLayout>

</android.support.v7.widget.CardView>

LinearLayout myLayout=(LinearLayout) findViewById(R.id.myLayout);
myLayout.setBackgroundResource(R.drawable.card1);

我希望这会对你有所帮助。

答案 1 :(得分:0)

使用card_view:cardBackgroundColor="#FFFFFFFF"代替android:background="#FFFFFFFF"
以编程方式使用,card.setCardBackgroundColor(color)代替card.setBackgroundColor(color)