简体   繁体   English

Android搜寻栏文字宽度超出范围

[英]Android Seek bar text width out of range

在此处输入图片说明 Here am using seek bar with text view . 这里使用带有text view seek bar when I change seek bar the text view also moving. 当我更改seek bartext view也会移动。 when I came last position of seek bar the text view out of the range. 当我到达seek bar的最后一个位置时, text view超出范围。

please,any one help where I am doing wrong. 请,我做错了的任何人的帮助。

Here am sharing my code . 在这里分享我的code when I change seek bar I want move the text view along with seek bar position. 当我更改seek bar我想将text view与搜索栏位置一起移动。

    // Seek bar code         
    seekbar_pay_restaurant_.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    //change position of seekebar tool tip according to seekbar progress               
                    int x = seekBar.getThumb().getBounds().left;
                    Log.v("y value ",""+x);
                    int width = seekBar.getThumb().getMinimumWidth();
                    int textWidth=tv_tool_type_food_.getMeasuredWidth();
                    Log.v("textview Width","width"+textWidth);
                    Log.v("width",""+ width);
                    tv_tool_type_food_.setX(x);
                    if (seekbar_pay_restaurant_.getProgress() == 0) {
                        tv_tool_type_food_.setText(getResources().getString(R.string.hint_fast_food__));
                        // tv_tool_type_food_.setX(y);
                        return ;
                    } else if (progress == 1) {
                        tv_tool_type_food_.setX(x);
                        tv_tool_type_food_.setText(getResources().getString(R.string.hint_fast_casual__));
                        return ;
                    } else if (progress == 2) {
                      // tv_tool_type_food_.setX(x );
                        tv_tool_type_food_.setText(getResources().getString(R.string.hint_casual__));
                        return;
                    } else if (progress == 3) {
                          tv_tool_type_food_.setText(getResources().getString(R.string.hint_fine_dyning__));
                        return;
                    }
                    tv_tool_type_food_.setText(getResources().getString(R.string.hint_fast_food__));
                }
                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                }
            });
// seek bar xml file 
<SeekBar
                                android:id="@+id/seekbar_pay_restaurant"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:max="3"
                                android:progress="0"
                                android:thumbOffset="@dimen/two_dp"
                                android:layout_marginRight="@dimen/twenty_dp"
                                android:layout_marginLeft="@dimen/five_dp"
                                />
<TextView android:id="@+id/tv_tool_type_food"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                style="@style/label_white_h13"
                                android:background="@drawable/tooltip_bg"
                                android:typeface="normal"
                                android:text="@string/hint_fast_food__"
                                android:gravity="center"
                                android:paddingLeft="@dimen/seven_dp"
                                android:paddingRight="@dimen/seven_dp"
                                android:paddingTop="@dimen/ten_dp"
                                android:paddingBottom="@dimen/ten_dp"
                                android:layout_marginRight="@dimen/one_sp"
                                android:layout_marginLeft="@dimen/one_dp"/>
// Seek bar code          
    seekbar_pay_restaurant_.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
                @Override 
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    //change position of seekebar tool tip according to seekbar progress                
                    int x = seekBar.getThumb().getBounds().left;
                    Log.v("y value ",""+x);
                    int width = seekBar.getThumb().getMinimumWidth();
                    int textWidth=tv_tool_type_food_.getMeasuredWidth();
                    Log.v("textview Width","width"+textWidth);
                    Log.v("width",""+ width);
                    if(x < max_x ) { // This will prevent the movement of text view out side
                       tv_tool_type_food_.setX(x);
                    }
                    if (seekbar_pay_restaurant_.getProgress() == 0) { 
                        tv_tool_type_food_.setText(getResources().getString(R.string.hint_fast_food__));
                        // tv_tool_type_food_.setX(y); 
                        return ; 
                    } else if (progress == 1) {
                        tv_tool_type_food_.setX(x);
                        tv_tool_type_food_.setText(getResources().getString(R.string.hint_fast_casual__));
                        return ; 
                    } else if (progress == 2) {
                      // tv_tool_type_food_.setX(x ); 
                        tv_tool_type_food_.setText(getResources().getString(R.string.hint_casual__));
                        return; 
                    } else if (progress == 3) {
                          tv_tool_type_food_.setText(getResources().getString(R.string.hint_fine_dyning__));
                        return; 
                    } 
                    tv_tool_type_food_.setText(getResources().getString(R.string.hint_fast_food__));
                } 
                @Override 
                public void onStartTrackingTouch(SeekBar seekBar) {
                } 

                @Override 
                public void onStopTrackingTouch(SeekBar seekBar) {
                } 
            }); 

Best way to calculate that value is 计算该值的最佳方法是

int seek_bar_width = seekbar.getMeasuredWidth();
int text_view_with = textview.getMeasuredWidth();
int max_x = seekbar.getX()+seek_bar_width-text_view_with;

Hope this helps! 希望这可以帮助!

If you want to move the text view with the seekbar position, then you will need to add this: 如果要移动带有搜寻栏位置的文本视图,则需要添加以下内容:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

if (textview.getX() > width-textview.getLayoutParams().width) {
   textview.setX(width-textview.getLayoutParams().width);
}

This "if" will prevent doing that problem. 此“如果”将防止出现该问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM