在保持圆角的同时为Android CardView上色部分

时间:2017-06-05 06:25:15

标签: android xml material-design

所以我觉得我错过了一些东西,但我似乎无法弄清楚这一点。所以我想在我的CardView顶部制作一小条颜色,但如果我使用框架布局或任何类型的布局并设置背景颜色,它会覆盖CardView的圆角。这是一些代码和问题的屏幕截图。提前谢谢!

<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
card_view:cardCornerRadius="10dp">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="16dp"
    android:layout_gravity="end"
    android:background="@color/colorPrimaryDark"
    android:clipChildren="true"/>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/menuCardImage"
        android:layout_width="128dp"
        android:layout_height="128dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_margin="8dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_margin="8dp"
        android:layout_toRightOf="@+id/menuCardImage"
        android:orientation="vertical">

        <TextView
            android:id="@+id/menuCardName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="32sp"
            android:textStyle="bold" />

    </LinearLayout>

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

issue image

编辑: 事实证明这只是android studio中的一个显示问题。当我安装应用程序时,它工作正常。

3 个答案:

答案 0 :(得分:2)

而不是将颜色设置为背景使用此drawable来设置背景。

class ViewControllerAudioDetail: UIViewController { @IBOutlet var list: TableViewControllerAudioList! @IBOutlet weak var playChange: UIButton! @IBOutlet weak var timeAudio: UILabel! @IBOutlet weak var playbackSlider: UISlider! var player = AVPlayer() override func viewDidLoad() { super.viewDidLoad() navigationItem.title = "БИБЛИОТЕКА" } @IBAction func play(_ sender: Any) { if player.rate == 0 { let url = URL(string: ViewControllerAudioDetail.urlAudio[0]) let playerItem = AVPlayerItem(url: url!) player = AVPlayer(playerItem:playerItem) player.rate = 1.0; player.play() playChange.setImage(UIImage(named:"Pause.png"), for: UIControlState.normal) let duration : CMTime = playerItem.asset.duration let seconds : Float64 = CMTimeGetSeconds(duration) playbackSlider.tintColor = UIColor.green let _ = player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: DispatchQueue.main) { [weak self] (time) in self?.playbackSlider.value = Float(CMTimeGetSeconds(time)) / Float(seconds) } } else { playChange.setImage(UIImage(named:"Play.png"), for: UIControlState.normal) player.pause() } } @IBAction func audioPlaybackSlider(_ sender: Any) { //перемотка аудиозвука let duration : CMTime = player.currentItem!.duration let totalDuration : Float64 = CMTimeGetSeconds(duration) let value = self.playbackSlider.value let durationToSeek = Float(totalDuration) * value player.seek(to: CMTimeMakeWithSeconds(Float64(durationToSeek),player.currentItem!.duration.timescale)) { [](state) in } } } 文件夹中创建top_strip.xml

drawable

将半径设置为等于卡角半径,并根据需要更改颜色。它会起作用

答案 1 :(得分:0)

您现在可以设置 CardView 颜色。

color = ContextCompat.getColor(cardView.getContext(), R.color.white);
cardView.setCardBackgroundColor(color);

这是最简单的方法。

答案 2 :(得分:0)

我认为您应该尝试使用app:cardBackgroudColorCardView.setCardBackgroundColor。这对我有用。