1. ホーム
  2. android

[解決済み] Androidのスタイルボトムライン

2022-06-25 22:52:54

質問

アンドロイドのシェイプを作成し、下部のみにストローク(破線)を持たせる必要があります。次のようにすると、ストロークがシェイプの中心を通るように二等分されます。どなたか正しい方法をご存知でしょうか。ストロークは底の線/境界線である必要があります。私はTextViewの背景として形状を使用しています。私がそれを必要とする理由を気にしないでください。

<?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="#1bd4f6" />
        </shape>
    </item>

    <item>
        <shape android:shape="line" >
            <padding android:bottom="1dp" />

            <stroke
                android:dashGap="10px"
                android:dashWidth="10px"
                android:width="1dp"
                android:color="#ababb2" />
        </shape>
    </item>

</layer-list>

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

ハックみたいなものですが、たぶんこれが一番いい方法だと思います。高さに関係なく、破線は常に下になります。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#1bd4f6" />
        </shape>
    </item>

    <item android:top="-2dp" android:right="-2dp" android:left="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:dashGap="10px"
                android:dashWidth="10px"
                android:width="1dp"
                android:color="#ababb2" />
        </shape>
    </item>

</layer-list>

説明

2つ目の図形は、破線の輪郭を持つ透明な長方形です。境界線が底面に沿ってのみ表示されるようにするための鍵は、他の側面に設定された負の余白にあります。これらの負のマージンは、それらの辺の描画領域の外側に破線を押し出し、底に沿った線だけを残します。潜在的な副作用として (私は試していませんが)、それ自身の境界の外側を描画するビューでは、負のマージンの境界が表示される可能性があることです。