gpt4 book ai didi

android - 在 scrollbarTrackVertical android 之外设置自定义圆角 scrollbarThumbVertical

转载 作者:行者123 更新时间:2023-11-30 03:34:24 24 4
gpt4 key购买 nike

下面三个xml文件是我自定义的滚动条。我想在 scroll.xml 之外设置 seek_bar_thumboutsite.xml。

enter image description here

style.xml

    <style name="scroll">
<item name="android:scrollbarThumbVertical">@drawable/seek_bar_thumb</item>
<item name="android:scrollbarTrackVertical">@drawable/scroll</item>
<item name="android:scrollbarThumbHorizontal">@drawable/scrollbar_handle</item>
<item name="android:scrollbarTrackHorizontal">@drawable/scrollbar_track</item>
<item name="android:scrollbarFadeDuration">0</item>
<item name="android:scrollbarAlwaysDrawVerticalTrack">true</item>

</style>


**scroll.xml**

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#E3E3E3"/>
<stroke android:width="1dp"
android:color="#E3E3E3" /><!-- #330000FF #ffffffff -->
<gradient
android:startColor="#E3E3E3"
android:endColor="#E3E3E3"
android:angle="90"/>

<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
<corners android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
</shape>


**seek_bar_thumb**

<?xml version="1.0" encoding="UTF-8"?>
<!-- @author : @alexduhem
blog.sakaroz.com
-->
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="25dip"
android:height="25dip" />
<stroke
android:width="1dip"
android:color="#ff5da8d4" />
<gradient
android:startColor="#ff0e75af"
android:endColor="#ff1997e1"
android:angle="270"
android:type="linear" />
</shape>

我希望拇指在下面的进度条中看起来像随机圆形 scrollthumbvertical。唯一的区别是滚动拇指应该是垂直的

enter image description here

最佳答案

解决方法如下:

您的 main.xml 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" >

<android.widget.VerticalSeekBar android:id="@+id/vertical_Seekbar"
android:layout_width="wrap_content"
android:layout_height="150dip" />

<TextView android:id="@+id/vertical_sb_progresstext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>


</LinearLayout>

现在在你项目的src中新建一个包,并保留这个文件

VerticalSeekBar.java

package android.widget;

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;

public class VerticalSeekBar extends SeekBar {

public VerticalSeekBar(Context context) {
super(context);
}

public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

public VerticalSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}

protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(h, w, oldh, oldw);
}

@Override
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(heightMeasureSpec, widthMeasureSpec);
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
}

protected void onDraw(Canvas c) {
c.rotate(-90);
c.translate(-getHeight(),0);

super.onDraw(c);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled()) {
return false;
}

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
int i=0;
i=getMax() - (int) (getMax() * event.getY() / getHeight());
setProgress(i);
Log.i("Progress",getProgress()+"");
onSizeChanged(getWidth(), getHeight(), 0, 0);
break;

case MotionEvent.ACTION_CANCEL:
break;
}
return true;
}

}

启动 Activity .java 文件将包含如下代码

示例 Activity .java

package com.sample;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.VerticalSeekBar;

public class SampleActivity extends Activity {

VerticalSeekBar verticalSeekBar=null;
TextView vsProgress=null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

verticalSeekBar=(VerticalSeekBar)findViewById(R.id.vertical_Seekbar);
vsProgress=(TextView)findViewById(R.id.vertical_sb_progresstext);


verticalSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {


public void onStopTrackingTouch(SeekBar seekBar) {

}


public void onStartTrackingTouch(SeekBar seekBar) {
}

public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
vsProgress.setText(progress+"");

}
});
}
}

这是绝对适合您的代码。对我很好。如果您仍有任何疑问,请随时询问。

关于android - 在 scrollbarTrackVertical android 之外设置自定义圆角 scrollbarThumbVertical,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com