如何只在底部创建边框?

4

我正在尝试创建一个应用程序,在我的应用程序中,我试图在按钮底部创建边框,但是当我运行应用程序时,它只显示顶部的边框,有人能告诉我如何实现这个目标吗?以下是我的UI的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
 android:orientation="horizontal"
tools:context="com.example.button_pressed_effect_example.MainActivity" >

 <Button 
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="One"
    android:id="@+id/button1"
   android:background="@drawable/custom_btn_black_orange"
   android:drawableBottom="@drawable/liti"

    />
<Button 
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="Two"
    android:id="@+id/button2"
   android:background="@drawable/custom_btn_black_orange"
    />

 </LinearLayout>

liti.xml

      <layer-list /android">
         <item   android:left="10dp" android:bottom="10dp">
         <shape android:shape="line">

        <stroke android:width="10dp" android:color="#ffffff" />
        </shape>
        </item>
        </layer-list>

custom_btn_black_orange.xml

 <selector >

  <item android:state_pressed="true" >
     <shape android:shape="rectangle"  >

         <gradient
             android:angle="-90"  
             android:startColor="#5B0B0E"
             android:endColor="#5B0B0E"  />           
     </shape>
 </item>
<item android:state_pressed="false">
     <shape android:shape="rectangle"  >

         <solid  android:color="#731013"/>      
     </shape>
 </item> 
<item >
    <shape android:shape="rectangle"  >
         <gradient
             android:angle="-90"  
             android:startColor="#5B0B0E"
             android:endColor="#5B0B0E" />           
     </shape>
 </item>
 </selector>

custom_btn_black_orangepressed.xml

    <selector>

   <item android:state_pressed="false" >
     <shape android:shape="rectangle"  >

         <gradient
             android:angle="-90"  
             android:startColor="#5B0B0E"
             android:endColor="#5B0B0E"  />           
     </shape>

 </item>
<item android:state_pressed="false">
     <shape android:shape="rectangle"  >

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

         <gradient
             android:angle="-90"  
             android:startColor="#5B0B0E"
             android:endColor="#5B0B0E" />           
     </shape>
 </item>
 </selector>

Myjava.java

    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
               btn.setBackgroundResource(R.drawable.custom_btn_black_orangepressed);
            btn2.setBackgroundResource(R.drawable.custom_btn_black_orange);
        }
    });

    btn2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            btn2.setBackgroundResource(R.drawable.custom_btn_black_orangepressed);
            btn.setBackgroundResource(R.drawable.custom_btn_black_orange);
        }
    });

drawableBottom 可能会起作用。 - DroidDev
我已经使用了检查问题。 - parajs dfsb
你确定你的自定义形状不会干扰底部添加的可绘制对象吗? - DroidDev
@DroidDev 你能检查一下吗? - parajs dfsb
只需检查您的第二个按钮的声明:您正在使用android:background="@drawable/custom_one"。我猜应该是android:background="@drawable/customone",因为您只显示了customone xml的代码。 - AADProgramming
显示剩余4条评论
3个回答

14

你的问题可能与下面所述不同,或者你无法清楚地表达,但是我理解了

  1. 在drawable中创建两个文件,一个是bottom_selected,另一个是bottom_unselected

bottom_selected.xml

<?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="#001EFF" />
        </shape>
    </item>
    <item android:bottom="3dp">
        <shape android:shape="rectangle" >
            <solid android:color="#FFFFFF" />
        </shape>
    </item>

</layer-list>

未选中状态下的底部.xml

<?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="#001EFF" />
        </shape>
    </item>
    <item android:bottom="1dp">
        <shape android:shape="rectangle" >
            <solid android:color="#FFFFFF" />
        </shape>
    </item>

</layer-list>

现在轮到你的按钮了

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/fragment_container"
        android:layout_marginLeft="54dp"
        android:layout_marginTop="110dp"
        android:background="@drawable/bottom_selected"
        android:text="Button" />

    <Button
        android:id="@+id/Button01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_toRightOf="@+id/button1"
        android:background="@drawable/bottom_unselected"
        android:text="Button" />

    <Button
        android:id="@+id/Button02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/Button01"
        android:layout_alignBottom="@+id/Button01"
        android:layout_toRightOf="@+id/Button01"
        android:background="@drawable/bottom_unselected"
        android:text="Button" />

最终视图

enter image description here


1
完美地按需工作! - Gautam Mandsorwale

2

代码 -

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--Minus (-) how much dp you gave in the stroke width from left right top-->
    <item android:left="-10dp" android:right="-10dp" android:top="-10dp">
        <shape
            android:shape="rectangle">
            <stroke
                android:width="10dp"
                android:color="@android:color/holo_red_dark" />
            <!--This is the main background -->
            <solid android:color="#FFDDDDDD" />
        </shape>
    </item>
</layer-list>

预览 -

enter image description here


0
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
  <gradient android:startColor="#FFFFFF" 
    android:endColor="#FFFFFF"
    android:angle="270" />
  <corners android:radius="3dp" />
  <stroke android:width="5px" android:color="#eecc68" />
</shape>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接