woshidan's blog

そんなことよりコードにダイブ。

Viewの特定の辺に線をつける

元々はRecyclerViewに区切り線がつけたかったのですが、正当派の実装で区切り線をつけると大変そうだったというかなぜかクラッシュばかりしてしまいました*1

qiita.com

それで方針転換して、とりあえず下線をViewにつけようと思って調べていたところ、下記の記事を見つけて試してみました。

qiita.com

試しながら、コードレベルで設定してあるのをXMLでできないかな、と思って正しいかどうかは別としてやってみたらできたので、メモ。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:text="@string/hello_world"
        android:textSize="16sp"
        android:background="@drawable/border_bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="-2dp"
          android:right="-2dp"
          android:left="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="1dp"
                android:color="#aa3000"
                android:dashWidth="2dp"
                android:dashGap="2dp"/>
        </shape>
    </item>
</layer-list>

f:id:woshidan:20151118212545p:plain

*1:コンストラクタで渡すContextが間違ってるのかな...いつか、ちゃんとやり直そう...