私はAndroidが初めてで、これがここでの最初の質問です。
カードビューの先頭に色付きの垂直ボーダーを追加しようとしています。 xmlでどのように達成できますか?空のテキストビューで追加しようとしましたが、カードビュー全体が台無しになっています。たとえば、下に掲載されている写真のリンクを確認してください。
activity_main.xml
<Android.support.v7.widget.CardView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
card_view:contentPadding="16dp"
card_view:cardElevation="2dp"
card_view:cardCornerRadius="5dp">
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical">
<TextView
style="@style/Base.TextAppearance.AppCompat.Headline"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Title" />
<TextView
style="@style/Base.TextAppearance.AppCompat.Body1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Content here" />
</LinearLayout>
</Android.support.v7.widget.CardView>
どうもありがとう
やってみてください:
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.CardView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
xmlns:card_view="http://schemas.Android.com/apk/res-auto"
card_view:cardElevation="2dp"
card_view:cardCornerRadius="5dp">
<FrameLayout
Android:background="#FF0000"
Android:layout_width="4dp"
Android:layout_height="match_parent"/>
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:padding="16dp"
Android:orientation="vertical">
<TextView
style="@style/Base.TextAppearance.AppCompat.Headline"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Title" />
<TextView
style="@style/Base.TextAppearance.AppCompat.Body1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Content here" />
</LinearLayout>
</Android.support.v7.widget.CardView>
これにより、カードビューからパディングが削除され、色付きのFrameLayoutが追加されます。次に、LinearLayoutのパディングを修正してから、他のフィールドを修正する必要があります
更新
カードコーナーの半径を保持する場合は、drawableフォルダーにcard_Edge.xmlを作成します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<solid Android:color="#F00" />
<size Android:width="10dp"/>
<padding Android:bottom="0dp" Android:left="0dp" Android:right="0dp" Android:top="0dp"/>
<corners Android:topLeftRadius="5dp" Android:bottomLeftRadius="5dp"
Android:topRightRadius="0.1dp" Android:bottomRightRadius="0.1dp"/>
</shape>
フレームレイアウトではAndroid:background="@drawable/card_Edge"
を使用します
開始材料設計の更新から、app:strokeColor
およびapp:strokeWidth
もサポートします。 詳細
材料設計の更新を使用します。次のコードをbuild.gradle
(:app)に追加します
dependencies {
// ...
implementation 'com.google.Android.material:material:1.0.0'
// ...
}
このソリューションは効率的ではないかもしれませんが、目的に役立ち、境界線の幅に柔軟性を追加します。
<Android.support.v7.widget.CardView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_margin="40dp"
Android:layout_gravity="center"
card_view:cardBackgroundColor="@color/some_color"
card_view:cardCornerRadius="20dp"
card_view:contentPadding="5dp"> <!-- Change it to customize the border width -->
<Android.support.v7.widget.CardView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="center"
card_view:cardCornerRadius="20dp"
card_view:contentPadding="5dp">
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<!-- Add your UI elements -->
</RelativeLayout>
</Android.support.v7.widget.CardView>
</Android.support.v7.widget.CardView>
Amitが提案したソリューションを改善したいと思います。 shapes
またはViews
を追加せずに、指定されたリソースを利用しています。 CardView
に背景色を指定してから、入れ子になったレイアウト、白い色をオーバープリントしますが、いくつかのleftMargin
...
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.CardView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
xmlns:card_view="http://schemas.Android.com/apk/res-auto"
card_view:cardElevation="2dp"
card_view:cardBackgroundColor="@color/some_color"
card_view:cardCornerRadius="5dp">
<!-- The left margin decides the width of the border -->
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:padding="16dp"
Android:layout_marginLeft="5dp"
Android:background="#fff"
Android:orientation="vertical">
<TextView
style="@style/Base.TextAppearance.AppCompat.Headline"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Title" />
<TextView
style="@style/Base.TextAppearance.AppCompat.Body1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Content here" />
</LinearLayout>
</Android.support.v7.widget.CardView>