如何设置搜索栏大拇指布局或一个TextView? [英] how to set the seek bar thumb with a layout or with a TextView?

查看:266
本文介绍了如何设置搜索栏大拇指布局或一个TextView?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望我的搜索栏,看起来像这样...

TextView的应搜索栏的拇指动...
我试图用

seek_needle.xml

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直><的TextView
    机器人:layout_width =match_parent
    机器人:layout_height =WRAP_CONTENT
    机器人:文字=
    />
    < ImageView的
        机器人:layout_width =25dp
        机器人:layout_height =FILL_PARENT
        机器人:SRC =@绘制/ seek_needle
        />< / LinearLayout中>

和在mail.xml

 <搜索栏
                机器人:ID =@ + ID / seekBar1
                机器人:layout_width =349dp
                机器人:layout_height =WRAP_CONTENT
                机器人:layout_gravity =中心
                机器人:最大=202
                机器人:layout_weight =80
                机器人:拇指=@布局/ seek_needle
                  > < /搜索栏>

此应用程序崩溃结果
请帮我...

下面是logcat的输出...

  17 09-11:50:23.582:I / dalvikvm(4142):主题ID = 3:反应信号3
09-11 17:50:23.762:I / dalvikvm(4142):写的堆栈跟踪到/data/anr/traces.txt
09-11 17:50:24.062:I / dalvikvm(4142):主题ID = 3:反应信号3
09-11 17:50:24.212:I / dalvikvm(4142):写的堆栈跟踪到/data/anr/traces.txt
09-11 17:50:24.582:I / dalvikvm(4142):主题ID = 3:反应信号3
09-11 17:50:24.632:I / dalvikvm(4142):写的堆栈跟踪到/data/anr/traces.txt
09-11 17:50:24.664:D / dalvikvm(4142):GC_CONCURRENT释放73K,2%自由9435K / 9607K,暂停7毫秒+ 8ms的
09-11 17:50:24.862:D / AndroidRuntime(4142):关闭VM
09-11 17:50:24.872:W / dalvikvm(4142):主题ID = 1:螺纹未捕获的异常(组= 0x409c01f8)退出
09-11 17:50:24.952:E / AndroidRuntime(4142):致命异常:主要
09-11 17:50:24.952:E / AndroidRuntime(4142):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.audioscreen / com.example.audioscreen.MainActivity}了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.audioscreen / com.example.audioscreen.Fm1Activity}:android.view.InflateException:二进制XML文件行#63:错误充气类android.widget.SeekBar
    09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.access $ 600(ActivityThread.java:123)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.os.Handler.dispatchMessage(Handler.java:99)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.os.Looper.loop(Looper.java:137)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.main(ActivityThread.java:4424)
09-11 17:50:24.952:E / AndroidRuntime(4142):在java.lang.reflect.Method.invokeNative(本机方法)
09-11 17:50:24.952:E / AndroidRuntime(4142):在java.lang.reflect.Method.invoke(Method.java:511)
09-11 17:50:24.952:E / AndroidRuntime(4142):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
09-11 17:50:24.952:E / AndroidRuntime(4142):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-11 17:50:24.952:E / AndroidRuntime(4142):在dalvik.system.NativeStart.main(本机方法)
09-11 17:50:24.952:E / AndroidRuntime(4142):因:了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.audioscreen / com.example.audioscreen.Fm1Activity}:android.view。 InflateException:二进制XML文件行#63:错误充气类android.widget.SeekBar
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.startActivityNow(ActivityThread.java:1797)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.widget.TabHost $ IntentContentStrategy.getContentView(TabHost.java:682)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.widget.TabHost.setCurrentTab(TabHost.java:346)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.widget.TabHost.addTab(TabHost.java:236)
09-11 17:50:24.952:E / AndroidRuntime(4142):在com.example.audioscreen.MainActivity.onCreate(MainActivity.java:82)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.Activity.performCreate(Activity.java:4465)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
09-11 17:50:24.952:E / AndroidRuntime(4142):11 ...更多
09-11 17:50:24.952:E / AndroidRuntime(4142):android.view.InflateException:二进制XML文件行#63:错误充气类android.widget.SeekBar产生的原因
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.createView(LayoutInflater.java:606)
09-11 17:50:24.952:E / AndroidRuntime(4142):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.inflate(LayoutInflater.java:489)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.inflate(LayoutInflater.java:352)
09-11 17:50:24.952:E / AndroidRuntime(4142):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.Activity.setContentView(Activity.java:1835)
09-11 17:50:24.952:E / AndroidRuntime(4142):在com.example.audioscreen.Fm1Activity.onCreate(Fm1Activity.java:24)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.Activity.performCreate(Activity.java:4465)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
09-11 17:50:24.952:E / AndroidRuntime(4142):21 ...更多
09-11 17:50:24.952:E / AndroidRuntime(4142):因:java.lang.reflect.InvocationTargetException
09-11 17:50:24.952:E / AndroidRuntime(4142):在java.lang.reflect.Constructor.constructNative(本机方法)
09-11 17:50:24.952:E / AndroidRuntime(4142):在java.lang.reflect.Constructor.newInstance(Constructor.java:417)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.view.LayoutInflater.createView(LayoutInflater.java:586)
09-11 17:50:24.952:E / AndroidRuntime(4142):36 ...更多
09-11 17:50:24.952:E / AndroidRuntime(4142):android.content.res.Resources $ NotFoundException:通过引起了绘制资源ID#0x7f030008文件RES /布局/ seek_needle.xml
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.content.res.Resources.loadDrawable(Resources.java:1923)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.content.res.TypedArray.getDrawable(TypedArray.java:601)
09-11 17:50:24.952:E / AndroidRuntime(4142):在android.widget.AbsSeekBar<&初始化GT;(AbsSeekBar.java:70
09-11 17:50:25.032:D / dalvikvm(4142):GC_CONCURRENT释放797K,免费9%9183K / 10055K,暂停7毫秒+ 7毫秒
09-11 17:50:25.203:I / dalvikvm(4142):主题ID = 3:反应信号3
09-11 17:50:25.232:I / dalvikvm(4142):写的堆栈跟踪到/data/anr/traces.txt
09-11 17:50:25.642:I / dalvikvm(4142):主题ID = 3:反应信号3
09-11 17:50:25.662:I / dalvikvm(4142):写的堆栈跟踪到/data/anr/traces.txt


解决方案

该方法需要从资源绘制,绘制在它的上面一些文本并返回新的绘制。所有你需要做的就是尽自己泡的资源ID,你想在上面的文字。然后,你可以通过返回的绘制你需要的地方。

 公共BitmapDrawable writeOnDrawable(INT drawableId,字符串文本){    位图BM = BitmapFactory.de codeResource(getResources(),drawableId).copy(Bitmap.Config.ARGB_8888,真);    涂料粉刷=新的油漆();
    paint.setStyle(Style.FILL);
    paint.setColor(Color.BLACK);
    paint.setTextSize(20);    帆布帆布=新的Canvas(BM);
    canvas.drawText(文字,0,bm.getHeight()/ 2,油漆);    返回新BitmapDrawable(BM);
}

从复制..
结合图片和文字来绘制的

编辑:

函数调用看起来像这样, mFreqbar.setThumb(writeOnDrawable(R.drawable.fm_radio_tune_position,MYTEXT));
 我遵守了我 fm_radio_tune_position.png 文件中的 RES /绘制/ MYTEXT '是我想上绘上书写字符串

i want my seek bar to look like this...

the TextView should move with the thumb of seek bar... i tried with

seek_needle.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text=""
    />    
    <ImageView 
        android:layout_width="25dp"
        android:layout_height="fill_parent"
        android:src="@drawable/seek_needle"
        />

</LinearLayout>

and in mail.xml

  <SeekBar
                android:id="@+id/seekBar1"
                android:layout_width="349dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:max="202"
                android:layout_weight="80"
                android:thumb="@Layout/seek_needle"                  
                  >         </SeekBar>  

for this application is crashing
please help me out...

here is logcat output...

    09-11 17:50:23.582: I/dalvikvm(4142): threadid=3: reacting to signal 3
09-11 17:50:23.762: I/dalvikvm(4142): Wrote stack traces to '/data/anr/traces.txt'
09-11 17:50:24.062: I/dalvikvm(4142): threadid=3: reacting to signal 3
09-11 17:50:24.212: I/dalvikvm(4142): Wrote stack traces to '/data/anr/traces.txt'
09-11 17:50:24.582: I/dalvikvm(4142): threadid=3: reacting to signal 3
09-11 17:50:24.632: I/dalvikvm(4142): Wrote stack traces to '/data/anr/traces.txt'
09-11 17:50:24.664: D/dalvikvm(4142): GC_CONCURRENT freed 73K, 2% free 9435K/9607K, paused 7ms+8ms
09-11 17:50:24.862: D/AndroidRuntime(4142): Shutting down VM
09-11 17:50:24.872: W/dalvikvm(4142): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
09-11 17:50:24.952: E/AndroidRuntime(4142): FATAL EXCEPTION: main
09-11 17:50:24.952: E/AndroidRuntime(4142): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.audioscreen/com.example.audioscreen.MainActivity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.audioscreen/com.example.audioscreen.Fm1Activity}: android.view.InflateException: Binary XML file line #63: Error inflating class android.widget.SeekBar
    09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.os.Looper.loop(Looper.java:137)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.main(ActivityThread.java:4424)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at java.lang.reflect.Method.invokeNative(Native Method)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at java.lang.reflect.Method.invoke(Method.java:511)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at dalvik.system.NativeStart.main(Native Method)
09-11 17:50:24.952: E/AndroidRuntime(4142): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.audioscreen/com.example.audioscreen.Fm1Activity}: android.view.InflateException: Binary XML file line #63: Error inflating class android.widget.SeekBar
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1797)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.widget.TabHost.setCurrentTab(TabHost.java:346)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.widget.TabHost.addTab(TabHost.java:236)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at com.example.audioscreen.MainActivity.onCreate(MainActivity.java:82)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.Activity.performCreate(Activity.java:4465)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
09-11 17:50:24.952: E/AndroidRuntime(4142):     ... 11 more
09-11 17:50:24.952: E/AndroidRuntime(4142): Caused by: android.view.InflateException: Binary XML file line #63: Error inflating class android.widget.SeekBar
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.createView(LayoutInflater.java:606)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.Activity.setContentView(Activity.java:1835)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at com.example.audioscreen.Fm1Activity.onCreate(Fm1Activity.java:24)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.Activity.performCreate(Activity.java:4465)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
09-11 17:50:24.952: E/AndroidRuntime(4142):     ... 21 more
09-11 17:50:24.952: E/AndroidRuntime(4142): Caused by: java.lang.reflect.InvocationTargetException
09-11 17:50:24.952: E/AndroidRuntime(4142):     at java.lang.reflect.Constructor.constructNative(Native Method)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.view.LayoutInflater.createView(LayoutInflater.java:586)
09-11 17:50:24.952: E/AndroidRuntime(4142):     ... 36 more
09-11 17:50:24.952: E/AndroidRuntime(4142): Caused by: android.content.res.Resources$NotFoundException: File res/layout/seek_needle.xml from drawable resource ID #0x7f030008
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.content.res.Resources.loadDrawable(Resources.java:1923)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
09-11 17:50:24.952: E/AndroidRuntime(4142):     at android.widget.AbsSeekBar.<init>(AbsSeekBar.java:70
09-11 17:50:25.032: D/dalvikvm(4142): GC_CONCURRENT freed 797K, 9% free 9183K/10055K, paused 7ms+7ms
09-11 17:50:25.203: I/dalvikvm(4142): threadid=3: reacting to signal 3
09-11 17:50:25.232: I/dalvikvm(4142): Wrote stack traces to '/data/anr/traces.txt'
09-11 17:50:25.642: I/dalvikvm(4142): threadid=3: reacting to signal 3
09-11 17:50:25.662: I/dalvikvm(4142): Wrote stack traces to '/data/anr/traces.txt'

解决方案

This method takes a drawable from your resources, draws some text on top of it and returns the new drawable. All you need to do is give it the resource id of your bubble, and the text you want on top. Then you can pass the returned drawable wherever you want it.

public BitmapDrawable writeOnDrawable(int drawableId, String text){

    Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);

    Paint paint = new Paint(); 
    paint.setStyle(Style.FILL);  
    paint.setColor(Color.BLACK); 
    paint.setTextSize(20); 

    Canvas canvas = new Canvas(bm);
    canvas.drawText(text, 0, bm.getHeight()/2, paint);

    return new BitmapDrawable(bm);
}

copied from.. Combine image and text to drawable

EDIT:

function call looks like this, mFreqbar.setThumb(writeOnDrawable(R.drawable.fm_radio_tune_position, mytext)); I have kept my fm_radio_tune_position.png file in res/drawable/ and 'mytext' is the string which i want to write on top of that drawable

这篇关于如何设置搜索栏大拇指布局或一个TextView?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆