Android搜索栏遇到的问题记录

本文介绍了Android开发中style.xml文件的应用技巧,包括如何定义和应用样式以统一UI元素外观,利用shape实现自定义背景,以及调整Drawable资源尺寸的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  学习Android有段时间了,现在才正式接触到style.xml这里, 在编写Android的搜索栏时遇到了一些问题在这里总结下:
  1、首先style.xml文件可以定义很多,比如说如果许多View有用相同的设置,可以直接在style.xml文件中定义一种style,然后在布局文件引用时直接style=”“就好了,如:

    <style name="editTextStyle">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item  name="android:background">@drawable/search_edit_bg</item>
        <!--drawablepadding设置共处一个View内的对像的距离,不影响父View的边框-->
        <item name="android:drawablePadding">5dp</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:imeOptions">actionSearch</item>
        <item name="android:singleLine">true</item>
        <item name="android:textSize">16sp</item>
        <item name="android:padding">5dp</item><!--设置最外层View距边框的距离。-->
        <item name="android:hint">Search</item>
    </style>
  如果使用这个样式这样用:
        <EditText
        style="@style/editTextStyle"
        android:id="@+id/et_search"/>

  2、关于shape的使用,其中有好多属性现在都忘了,复习下:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--solid指的是填颜色-->
    <solid android:color="@android:color/white"/>
    <!--stroke指的是边框线,,这里定义了边框线颜色-->
    <stroke
        android:width="1px"
        android:color="@android:color/darker_gray"/>
        <!--conrners指是角的圆滑度-->
    <corners android:radius="15dp"/>
    <!--gradient设置的是颜色的渐变,angle指的是方向,当angle=0时,渐变色是从左向右。 然后逆时针方向转,当angle=90时为从下往上。-->
    <gradient android:startColor="#9cff00"   
          android:endColor="#197600"  
          android:angle="270"/>  
</shape>
  可参考:http://blog.youkuaiyun.com/lan410812571/article/details/9946991

3、如何修改drawable的图像的大小:

private Drawable zoomDrawable(Drawable drawable, int w, int h) {
     //要注意这里的值都是以dp为单位的。
        int width = drawable.getIntrinsicWidth();
        int height = drawable.getIntrinsicHeight();
        Log.d("XXXXX", width + " " + height);
        Bitmap oldbmp = drawableToBitmap(drawable);
        Matrix matrix = new Matrix();
        float scaleWidth = ((float) w / width);
        float scaleHeight = ((float) h / height);
        matrix.postScale(scaleWidth, scaleHeight);
        Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0,
         width, height, matrix, true);
        return new BitmapDrawable(null, newbmp);
    }

    private Bitmap drawableToBitmap(Drawable drawable) {
        int width = drawable.getIntrinsicWidth();
        int height = drawable.getIntrinsicHeight();
        Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
                : Bitmap.Config.RGB_565;
        Bitmap bitmap = Bitmap.createBitmap(width, height, config);
        Canvas canvas = new Canvas(bitmap);
        //setBounds是设置一个矩形区域,前两个是起始坐标,后两个是结束坐标
        //坐标相对于父VIWE来说的
        drawable.setBounds(0, 0, width, height);
        drawable.draw(canvas);
        return bitmap;
    }
关于Drawable和Bitmap的知识,参考http://dyh7077063.iteye.com/blog/970672

  END

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值