buttonandroid圆角边框
❶ android button 怎么消除边框
使用资源文件shape定义背景(background)
下图是安卓无忧中的例子,可以看里面的源码还有文档,大部分形状都可以定义,请看截图:

在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,首先我们了解一下
Shape下面有哪些标签,都代表什么意思:
1.1 solid:填充
android:color指定填充的颜色
1.2 gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,
android:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,
可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。
angle值对应的位置如图:
1.3 stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离
1.4 corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,
同时设置五个属性,则Radius属性无效
android:Radius="20dp" 设置四个角的半径
android:topLeftRadius="20dp" 设置左上角的半径
android:topRightRadius="20dp" 设置右上角的半径
android:bottomLeftRadius="20dp" 设置右下角的半径
android:bottomRightRadius="20dp" 设置左下角的半径
padding:间隔
可以设置上下左右四个方向的间隔
ps:为了方便交流看一下我名字中文和除了中文以外的。
❷ 怎么给android 设置边框
总结一下android ui界面里面如何设置边框,以及如何把边框设置成弧形的即圆角。
           其实,android的ui里,界面一般都是比较简单的,不会像web页面那样,数据量比较大,关于给android界面(表格)设置边框,其思想很想我们用HTML设计表格然后给它设置边框,如果你懂html的话。即通过给不同的控件设置背景颜色来反衬出边框线
           以一个登录界面为例,设置一个有边框线的android 登录界面:
注:本例要求的只是将该TableLayout中的行与行之间用边框线隔开
此例中,采用TableLayout布局,非常简单,里面有3个TableRow,分别放置   用户名、密码、登录按钮,根据上面说的设置边框线只需要设置控件的背景颜色即可。这个例子中要求行与行之间有边框线,那么,就这么想,
TableLayout:是该界面的布局管理器(当然也是一个控件),放在最外层,那么这时你可以给它选一个背景颜色参考注释 a)
TableRow:是表格中的一行,设置边框线重点就在此,它是紧跟着TableLayout的,可以给TableRow(行)设置背景色,参考b)
TableLayout与TableRow关系:可以看成父与子的关系,那么不管怎么样,TableLayout总是大于TableRow,那么通过给二者设置不同的颜色,设置颜色的时候可以让子组件(TableRow)周围稍微留出一点边界(就是它的背景色不会覆盖完整个行,如何让它显示成这样呢=====>android:layout_margin="0.5dip"[此属性即是设置该组件周围留出一点边界])
           <?xml version="1.0" encoding="UTF-8"?>
<TableLayout
android:id="@+id/widget30"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
xmlns:android="
android:background="#ffcccccc"     //a)给tablelayout设置背景色,改背景颜色将会是你要设置的边框线的背景色
android:layout_margin="1dip"
>
<!--android:background="@drawable/view_shape"  -->
<TableRow
android:id="@+id/widget40"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffffcc99"    //b)给tablerow设置背景色
android:layout_margin="0.5dip"       //c)非常重要的一点
>
<TextView
android:id="@+id/widget41"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login Name"
android:textStyle="bold"
android:layout_gravity="center_vertical"     //如果想让表格里的列与列(column之间)也有边框线隔开,则同上面一样也要设置android:background="#ffffcc99"与android:layout_margin="0.5dip"
>
</TextView>
<EditText
android:id="@+id/widget42"
android:layout_width="141px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:background="#ffffffff"
android:textColor="#ff000000"
>
</EditText>
</TableRow>
<TableRow
android:id="@+id/widget43"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffffcc99"
android:layout_margin="0.5dip"
>
<TextView
android:id="@+id/widget44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password"
android:textStyle="bold"
>
</TextView>
<EditText
android:id="@+id/widget45"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:background="#ffffffff"
android:textColor="#ff000000"
>
</EditText>
</TableRow>
<Button
android:id="@+id/widget46"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:textStyle="bold"
android:textColor="#ff000000"
android:layout_margin="2dip"
android:background="#ffffcc33"
>
<!--android:background="@drawable/view_shape"  -->
</Button>
</TableLayout>
❸ android中我shape里写了边框颜色、圆角,但调用过去没实现。。。
你是说View占满了整个屏幕吗?这样的话就只能在layout中写一个布局文件,将View以一种组件的方式声明到.xml文件中,然后你可以在它的上下中声明其他的button或者textview或者ImageButton等。
❹ 安卓按钮按下效果怎么设置呢怎么设置按钮圆角和按下效果
可以通过shape设置圆角
<?xml version="1.0" encoding="utf-8"?>
<!-- shape如果不声明形状默认是正方形 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- 设置圆角 -->
    <corners android:radius="2dp" >
    </corners>
    <!-- 设置填充色 -->
    <solid android:color="#4285f4" >
    </solid>
    <!-- 设置边框的颜色和宽度 -->
    <stroke
        android:width="1dp"
        android:color="#4285f4" >
    </stroke>
</shape>
通过selector设置点击效果
button_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- 这个是用于控制按钮组背景的文件 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- **点击时效果**********背景引用的资源*************************是否获得焦点*********************是否按下******* -->
    <item android:drawable="@drawable/button_p" android:state_focused="true" android:state_pressed="false"/>
    <item android:drawable="@drawable/button_p" android:state_focused="true" android:state_pressed="true"/>
    <item android:drawable="@drawable/button_p" android:state_focused="false" android:state_pressed="true"/>
    <!-- **************没有任何操作时显示的背景************** -->
    <item android:drawable="@drawable/button_n"></item>
</selector>
在xml文件中设置button的background属性。
 android:background="@drawable/button_bg"
❺ android设置控件样式(边框颜色,圆角)和图片样式(圆角)
本文链接:https://blog.csdn.net/weixin_37577039/article/details/79090433 
  
 ```
  
 <?xml version="1.0" encoding="utf-8"?>
  
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
  
     <solid android:color="@color/colorAccent" />
  
     <!-- 这里是设置为四周 也可以单独设置某个位置为圆角-->
  
     <corners android:topLeftRadius="5dp"
  
         android:topRightRadius="5dp"
  
         android:bottomRightRadius="5dp"
  
         android:bottomLeftRadius="5dp"/>
  
     <stroke android:width="1dp" android:color="#000000" />
  
 </shape
  
 ```
```
  <?xml version="1.0" encoding="UTF-8"?>
  
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">   
  
 <!-- 边框颜色值 -->
  
 <item>   
  
       <shape>   
  
             <solid android:color="#3bbaff" />   
  
       </shape>   
  
 </item>   
  
 <!--这个是按钮边框设置为四周 并且宽度为1-->
  
 <item
  
 android:right="1dp"
  
 android:left="1dp"
  
 android:top="1dp"
  
 android:bottom="1dp">
  
      <shape>   
  
 <!--这个是背景颜色-->
  
            <solid android:color="#ffffff" />       
  
 <!--这个是按钮中的字体与按钮内的四周边距-->
  
            <padding android:bottom="10dp"   
  
                 android:left="10dp"   
  
                 android:right="10dp"   
  
                 android:top="10dp" />   
  
      </shape>       
  
 </item>   
  
 </layer-list>
  
 ```
  
 使用:
  
 ```android:background="@drawable/button_edge"```
  
 ```
  <?xml version="1.0" encoding="UTF-8"?>
  
 <shape
  
     xmlns:android="http://schemas.android.com/apk/res/android"
  
     android:shape="rectangle">
  
     <!-- 填充的颜色 -->
  
     <solid android:color="#FFFFFF" />
  
     <!-- android:radius 弧形的半径 -->
  
     <!-- 设置按钮的四个角为弧形 -->
  
     <corners
  
     android:radius="5dip" /> 
  
     <!--也可单独设置-->
  
     <!-- <corners -->
  
    <!-- android:topLeftRadius="10dp"-->
  
    <!-- android:topRightRadius="10dp"-->
  
    <!-- android:bottomRightRadius="10dp"-->
  
   <!--  android:bottomLeftRadius="10dp"-->
  
  <!--   />  -->
  
         **设置文字padding**
  
     <!-- padding:Button里面的文字与Button边界的间隔 -->
  
     <padding
  
         android:left="10dp"
  
         android:top="10dp"
  
         android:right="10dp"
  
         android:bottom="10dp"
  
         />
  
 </shape>
  
 ```
```
  <?xml version="1.0" encoding="utf-8"?>
  
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
  
     <solid android:color="#FFFFFF" />
  
     <corners android:topLeftRadius="10dp"
  
         android:topRightRadius="10dp"
  
         android:bottomRightRadius="10dp"
  
         android:bottomLeftRadius="10dp"/>
  
 </shape>
  
 ```
  
 使用:
  
 ```
  
 android:background="@drawable/image_circle"
  
 ```
  
 ```
  Glide.with(MainActivity.this).load(croppedUri)
  
 .transform(new GlideRectRound(MainActivity.this,6)).into(headIcon);
  
 ```
```
  
 import android.content.Context;
  
 import android.content.res.Resources;
  
 import android.graphics.Bitmap;
  
 import android.graphics.BitmapShader;
  
 import android.graphics.Canvas;
  
 import android.graphics.Paint;
  
 import android.graphics.RectF;
  
 import android.util.Log;
  
 import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
  
 import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
  
 /**
  
  * Created by SiHao on 2018/3/3.
  
  * Glide 的 圆角 图片 工具类
  
  */
  
 public class GlideRectRound extends BitmapTransformation {
  
     private static float radius = 0f;
  
     // 构造方法1 无传入圆角度数 设置默认值为5
  
     public GlideRectRound(Context context) {
  
         this(context, 5);
  
     }
  
     // 构造方法2 传入圆角度数
  
     public GlideRectRound(Context context, int dp) {
  
         super(context);
  
         // 设置圆角度数
  
         radius = Resources.getSystem().getDisplayMetrics().density * dp;
  
     }
  
     // 重写该方法 返回修改后的Bitmap
  
     @Override
  
     protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
  
         return rectRoundCrop(pool,toTransform);
  
     }
  
     @Override
  
     public String getId() {
  
         Log.e("getID",getClass().getName() + Math.round(radius));
  
         return getClass().getName() + Math.round(radius);   // 四舍五入
  
     }
  
     private Bitmap rectRoundCrop(BitmapPool pool, Bitmap source){
  
         if (source == null) return null;
  
         Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); // ARGB_4444——代表4x4位ARGB位图,ARGB_8888——代表4x8位ARGB位图
  
         if (result == null) {
  
             result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
  
         }
  
         Canvas canvas = new Canvas(result);
  
         Paint paint = new Paint();
  
         // setShader 对图像进行渲染
  
         // 子类之一 BitmapShader设置Bitmap的变换  TileMode 有CLAMP (取bitmap边缘的最后一个像素进行扩展),REPEAT(水平地重复整张bitmap)
  
         //MIRROR(和REPEAT类似,但是每次重复的时候,将bitmap进行翻转)
  
         paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
  
         paint.setAntiAlias(true);   // 抗锯齿
  
         RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight());
  
         canvas.drawRoundRect(rectF, radius, radius, paint);
  
         return result;
  
     }
  
 }
  
 ```
  
  圆角: 
  
  ```
import android.content.Context;
  
 import android.graphics.Bitmap;
  
 import android.graphics.BitmapShader;
  
 import android.graphics.Canvas;
  
 import android.graphics.Paint;
  
 import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
  
 import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
  
 /**
  
  * Created by SiHao on 2018/3/3.
  
  * Glide圆形图片工具类
  
  */
  
 public class GlideCircleBitmap extends BitmapTransformation{
  
     public GlideCircleBitmap(Context context) {
  
         super(context);
  
     }
  
     // 重写该方法 返回修改后的Bitmap
  
     @Override
  
     protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
  
         return circleCrop(pool, toTransform);
  
     }
  
     @Override
  
     public String getId() {
  
         return getClass().getName();
  
     }
  
     private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
  
         if (source == null) return null;
  
         // 边长取长宽最小值
  
         int size = Math.min(source.getWidth(), source.getHeight());
  
         int x = (source.getWidth() - size) / 2;
  
         int y = (source.getHeight() - size) / 2;
  
         // TODO this could be acquired from the pool too
  
         Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);
  
         Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);// ARGB_4444——代表4x4位ARGB位图,ARGB_8888——代表4x8位ARGB位图
  
         if (result == null) {
  
             result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
  
         }
  
         Canvas canvas = new Canvas(result);
  
         Paint paint = new Paint();
  
         // setShader 对图像进行渲染
  
         // 子类之一 BitmapShader设置Bitmap的变换  TileMode 有CLAMP (取bitmap边缘的最后一个像素进行扩展),REPEAT(水平地重复整张bitmap)
  
         //MIRROR(和REPEAT类似,但是每次重复的时候,将bitmap进行翻转)
  
         paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
  
         paint.setAntiAlias(true);// 抗锯齿
  
         // 半径取 size的一半
  
         float r = size / 2f;
  
         canvas.drawCircle(r, r, r, paint);
  
         return result;
  
     }
  
 }
  
 ```
```
  
 URL url = new URL(String类型的字符串);    //将String类型的字符串转换为URL格式    
  
 holder.UserImage.setImageBitmap(BitmapFactory.decodeStream(url.openStream()));
  
 ```
  
 ```
  
 //得到资源文件的BitMap
  
 Bitmap image= BitmapFactory.decodeResource(getResources(),R.drawable.dog);
  
 //创建RoundedBitmapDrawable对象
  
 RoundedBitmapDrawable roundImg =RoundedBitmapDrawableFactory.create(getResources(),image);
  
 //抗锯齿
  
 roundImg.setAntiAlias(true);
  
 //设置圆角半径
  
 roundImg.setCornerRadius(30);
  
 //设置显示图片
  
 imageView.setImageDrawable(roundImg);
  
 ```
```
  //如果是圆的时候,我们应该把bitmap图片进行剪切成正方形, 然后再设置圆角半径为正方形边长的一半即可
  
   Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.dog);
  
   Bitmap bitmap = null;
  
   //将长方形图片裁剪成正方形图片
  
   if (image.getWidth() == image.getHeight()) {
  
       bitmap = Bitmap.createBitmap(image, image.getWidth() / 2 - image.getHeight() / 2, 0, image.getHeight(), image.getHeight());
  
   } else {
  
       bitmap = Bitmap.createBitmap(image, 0, image.getHeight() / 2 - image.getWidth() / 2, image.getWidth(), image.getWidth());
  
   }
  
   RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmap);
  
   //圆角半径为正方形边长的一半
  
   roundedBitmapDrawable.setCornerRadius(bitmap.getWidth() / 2);
  
   //抗锯齿
  
   roundedBitmapDrawable.setAntiAlias(true);
  
   imageView.setImageDrawable(roundedBitmapDrawable);
  
 ```
❻ android怎么给tablerow添加边框
总结一下android ui界面里面如何设置边框,以及如何把边框设置成弧形的即圆角。
           其实,android的ui里,界面一般都是比较简单的,不会像web页面那样,数据量比较大,关于给android界面(表格)设置边框,其思想很想我们用HTML设计表格然后给它设置边框,如果你懂html的话。即通过给不同的控件设置背景颜色来反衬出边框线
           以一个登录界面为例,设置一个有边框线的android 登录界面:
注:本例要求的只是将该TableLayout中的行与行之间用边框线隔开
此例中,采用TableLayout布局,非常简单,里面有3个TableRow,分别放置   用户名、密码、登录按钮,根据上面说的设置边框线只需要设置控件的背景颜色即可。这个例子中要求行与行之间有边框线,那么,就这么想,
TableLayout:是该界面的布局管理器(当然也是一个控件),放在最外层,那么这时你可以给它选一个背景颜色参考注释 a)
TableRow:是表格中的一行,设置边框线重点就在此,它是紧跟着TableLayout的,可以给TableRow(行)设置背景色,参考b)
TableLayout与TableRow关系:可以看成父与子的关系,那么不管怎么样,TableLayout总是大于TableRow,那么通过给二者设置不同的颜色,设置颜色的时候可以让子组件(TableRow)周围稍微留出一点边界(就是它的背景色不会覆盖完整个行,如何让它显示成这样呢=====>android:layout_margin="0.5dip"[此属性即是设置该组件周围留出一点边界])
           <?xml version="1.0" encoding="UTF-8"?>
<TableLayout
android:id="@+id/widget30"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ffcccccc"     //a)给tablelayout设置背景色,改背景颜色将会是你要设置的边框线的背景色
android:layout_margin="1dip"
>
<!--android:background="@drawable/view_shape"  -->
<TableRow
android:id="@+id/widget40"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffffcc99"    //b)给tablerow设置背景色
android:layout_margin="0.5dip"       //c)非常重要的一点
>
<TextView
android:id="@+id/widget41"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login Name"
android:textStyle="bold"
android:layout_gravity="center_vertical"     //如果想让表格里的列与列(column之间)也有边框线隔开,则同上面一样也要设置android:background="#ffffcc99"与android:layout_margin="0.5dip"
>
</TextView>
<EditText
android:id="@+id/widget42"
android:layout_width="141px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:background="#ffffffff"
android:textColor="#ff000000"
>
</EditText>
</TableRow>
<TableRow
android:id="@+id/widget43"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ffffcc99"
android:layout_margin="0.5dip"
>
<TextView
android:id="@+id/widget44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password"
android:textStyle="bold"
>
</TextView>
<EditText
android:id="@+id/widget45"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:background="#ffffffff"
android:textColor="#ff000000"
>
</EditText>
</TableRow>
<Button
android:id="@+id/widget46"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:textStyle="bold"
android:textColor="#ff000000"
android:layout_margin="2dip"
android:background="#ffffcc33"
>
<!--android:background="@drawable/view_shape"  -->
</Button>
</TableLayout>
❼ android怎么让button去掉边框
设置为无背景
android:background="@null"
