2011-11-30 110 views
3

我想将边框设置为Relativelayout。我使relativelayout可点击,并使用选择器来更改选定的颜色,我也使用形状来布局布局的角落。但是当我选择layou时,形状将包括边框在内的所有背景。我找不到解决这个问题的方法。如何将边框设置为布局

这是我的main.xml

<RelativeLayout android:id="@+id/map_refresh" 
       android:layout_height="fill_parent" android:layout_width="wrap_content" 
       android:background="@drawable/settings_selector_up" 
       android:padding="15dp" 
       android:layout_marginLeft="15dip" android:layout_marginRight="15dip" android:layout_marginTop="5dip"> 
       <TextView android:id="@+id/Text1" 
        android:layout_height="wrap_content" android:layout_width="wrap_content" 
        android:text="Map refresh period"> 
       </TextView> 
       <TextView android:id="@+id/TextView09" 
        android:layout_height="wrap_content" android:layout_width="wrap_content" 
        android:text="1 min" 
        android:layout_alignParentRight="true" 
        android:paddingRight="5dp"> 
       </TextView> 
      </RelativeLayout> 
</LinearLayout> 

这是我settings_selector_up.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Non focused states --> 
    <item android:state_focused="false" android:state_selected="false" 
     android:state_pressed="false" android:background="@drawable/settings_border_roundup" /> 
    <item android:state_focused="false" android:state_selected="true" 
     android:state_pressed="false" android:drawable="@drawable/settings_border_roundup" /> 

    <!-- Focused states --> 
    <item android:state_focused="true" android:state_selected="false" 
     android:state_pressed="false" android:drawable="@drawable/settings_border_roundup" /> 
    <item android:state_focused="true" android:state_selected="true" 
     android:state_pressed="false" android:drawable="@drawable/settings_border_roundup" /> 

    <!-- Pressed --> 
    <item android:state_selected="true" android:state_pressed="true" 
     android:drawable="@drawable/selector_pressed" > 
     </item> 
    <item android:state_pressed="true" android:drawable="@drawable/list_selector_pressed" /> 
</selector> 

,这是我selector_pressed

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#E6E6E6"></solid> 
    <corners android:radius ="10dp" /> 
</shape> 

有没有办法得到相同的结果,我们举例来说,在listView中使用listselector(在listview中,当我选择listitem时只使用背景色改变了但边界保持不变)。

回答

10

把整个事情在处理边界的绘制,这样另一位家长布局:

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="your background 9-patch or shape of the border" 
    android:padding="some padding value so the border looks ok"> 

    < Your RelativeLayout without the border stuff > 

</FrameLayout>