Как создать рамку на одном краю вида? - PullRequest
12 голосов
/ 01 февраля 2012

Я обнаружил, что для добавления границ вокруг представлений я могу использовать следующий код в качестве фона для представления:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<stroke android:width="1dp" android:color="#999999" />
<padding android:left="1dp" android:top="1dp" android:right="1dp"
    android:bottom="1dp" />
</shape>

Но что, если я хочу, чтобы граница была только для нижнего, верхнего или правого илиоставил?Я попробовал следующее:

<shape
  xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
<stroke android:color="#000"/>
</shape>

, но когда я установил его в качестве фона

android:background="@drawable/my_border"

, он рисует линию в середине вида, поэтому у меня есть эффект зачеркивания.Можно ли как-нибудь нарисовать эту линию снизу или сверху или сделать ее вертикальной?

В WPF у нас есть относительные координаты для фигур, поэтому я могу смещать линии по мере необходимости.Есть ли что-то похожее на Android?Если у нас нет границ, по крайней мере, у нас должны быть хорошие инструменты для рисования линий, чтобы мы могли рисовать границы по мере необходимости.Планируют ли разработчики Android что-то предпринять?

Ответы [ 2 ]

1 голос
/ 23 ноября 2014

Для линии границы сверху или снизу вы можете посмотреть мой предыдущий ответ здесь .Это очень простой способ.

0 голосов
/ 19 мая 2015

Вы ищете это:

<item android:state_pressed="false">
     <inset 
            android:insetBottom="-3dp"
            android:insetLeft="-3dp"
            android:insetTop="-3dp" >

                <shape >
                     <corners android:radius="0.0dip" />
                     <stroke android:width="2.0dip"  android:color="#EEE"/>

                </shape>
           </inset>
           </item>

граница будет отображаться только справа. И вы должны установить его в качестве фона

...