Android 如何以编程方式更改进度条的进度值?

Android 如何以编程方式更改进度条的进度值?,android,customization,android-progressbar,progress,Android,Customization,Android Progressbar,Progress,我正在尝试创建一些组件的自定义视图,因为我在应用程序中非常需要这种组合。除了myprogressBar的进度之外,代码中的所有内容都正常工作。我认为它没有正确获取XML文件的值 在init void中,我调用setProgressBar(progress)为xml文件提供当前值。例如,当我输入“setProgressBar(88)”时,它可以正常工作,但不能使用它必须在xml文件中找到的值 CustomProgressbar.java 公共类CustomProgressbar扩展了Relativ

我正在尝试创建一些组件的自定义视图,因为我在应用程序中非常需要这种组合。除了my
progressBar
的进度之外,代码中的所有内容都正常工作。我认为它没有正确获取
XML
文件的值

在init void中,我调用
setProgressBar(progress)
为xml文件提供当前值。例如,当我输入“
setProgressBar(88)
”时,它可以正常工作,但不能使用它必须在xml文件中找到的值

CustomProgressbar.java

公共类CustomProgressbar扩展了RelativeLayout{
@时尚人士
int index0=0;
@时尚人士
int index1=1;
@时尚人士
int index2=2;
文本视图标题文本;
文本视图值文本;
ProgressBar ProgressBar;
公共CustomProgressbar(上下文、属性集属性){
超级(上下文,attrs);
init(上下文,attrs);
}
私有void init(上下文上下文、属性集属性){
充气(上下文,右布局。自定义进度条布局,此);
int[]集合={R.attr.title,R.attr.value,R.attr.progress};
TypedArray TypedArray=上下文。获取样式属性(属性,集合);
CharSequence title=typedArray.getText(index0);
CharSequence值=typedArray.getText(index1);
int progress=typedArray.getInteger(index2,0);
typedArray.recycle();
titleText=findviewbyd(R.id.title\u text);
valueText=findViewById(R.id.value\u text);
progressBar=findViewById(R.id.progressBar\u attr);
setTitleText(标题);
setValueText(值);
设置进度条(进度);
}
公共字符序列getTitletText(){
返回titleText.getText();
}
公共字符序列getValueText(){
返回valueText.getText();
}
public int getProgressBar(){
返回progressBar.getProgress();
}
public void setTitleText(字符序列值){
titleText.setText(值);
}
public void setValueText(字符序列值){
valueText.setText(值);
}
公共void setProgressBar(int值){
progressBar.setProgress(值);
}
}
custom\u progressbar\u layout.xml


main_activity.xml


  • 当我运行应用程序时。


  • (我还不允许添加图像,所以我得到了链接。)

    试试看,样式属性是以另一种方式获得的

    public class CustomProgressbar extends RelativeLayout {
    
    private TextView titleText;
    private TextView valueText;
    private ProgressBar progressBar;
    
    public CustomProgressbar(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs);
    }
    
    private void init(Context context, AttributeSet attrs) {
        inflate(context, R.layout.custom_progressbar_layout, this);
    
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomProgressbar);
    
        CharSequence title = typedArray.getText(R.styleable.CustomProgressbar_title);
        CharSequence value = typedArray.getText(R.styleable.CustomProgressbar_value);
        int progress = typedArray.getInteger(R.styleable.CustomProgressbar_progress, 0);
    
        typedArray.recycle();
    
        titleText = findViewById(R.id.title_text);
        valueText = findViewById(R.id.value_text);
        progressBar = findViewById(R.id.progressbar_attr);
    
        setTitleText(title);
        setValueText(value);
        setProgressBar(progress);
    
    }
    
    public CharSequence getTitleText() {
        return titleText.getText();
    }
    
    public CharSequence getValueText() {
        return valueText.getText();
    }
    
    public int getProgressBar() {
        return progressBar.getProgress();
    }
    
    public void setTitleText(CharSequence value) {
        titleText.setText(value);
    }
    
    public void setValueText(CharSequence value) {
        valueText.setText(value);
    }
    
    public void setProgressBar(int value) {
        progressBar.setProgress(value);
    }
    
    }