1. ホーム
  2. アンドロイド

[解決済み】リニアレイアウトの片側にだけボーダーを描くには?

2022-04-10 09:47:52

質問

リニアレイアウトにボーダーを描画することができますが、四方に描画されるようになってしまいました。CSSで行うように右側だけに制限したいのですが(border-right:1px solid red;)。

試してみましたが、やはり全面に描画されます。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape android:shape="rectangle" >
        <stroke
            android:height="2dp"
            android:width="2dp"
            android:color="#FF0000" />

        <solid android:color="#000000" />

        <padding
            android:bottom="0dp"
            android:left="0dp"
            android:right="1dp"
            android:top="0dp" />

        <corners
            android:bottomLeftRadius="0dp"
            android:bottomRightRadius="5dp"
            android:radius="1dp"
            android:topLeftRadius="5dp"
            android:topRightRadius="0dp" />
    </shape>
</item>

これを実現するために、何かいい方法はないでしょうか?

ちなみに、必要な側に幅1dpのビューを置くというハックは使いたくありません。

どのように解決するのですか?

片側にボーダーを表示させるには、これを使用します。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="#FF0000" />
    </shape>
</item>
<item android:left="5dp">
    <shape android:shape="rectangle">
        <solid android:color="#000000" />
    </shape>
</item>
</layer-list>

編集

私を含め多くの人が、背景が透明な片側ボーダーを望んでいたので、私は、このようなボーダーを実装しました。 BorderDrawable これは、CSSを使うのと同じように、異なるサイズと色のボーダーを与えることができるものです。しかし、これはxmlで使用することができませんでした。XMLをサポートするために、私は BorderFrameLayout で、レイアウトを包むことができます。

私の ギズブ は、完全なソースです。