使用radioButtons在照片之间切换并使用进度条,textView和seek bar来改变所选照片的​​不透明度[重复]

Posted

技术标签:

【中文标题】使用radioButtons在照片之间切换并使用进度条,textView和seek bar来改变所选照片的​​不透明度[重复]【英文标题】:Using radioButtons to change between photos and using progress bar, textView and seek bar to change the opacity of chosen photo [duplicate] 【发布时间】:2021-03-06 15:19:31 【问题描述】:

我是一名学生,今年学习android studio with java。上周我了解了进度条、搜索栏和单选按钮。我的作业是使用单选按钮在照片之间进行切换,并使用进度条、textView(用于百分比)和搜索栏来更改所选照片的​​不透明度。

我尽我所能,实际上,当我查看“设计”时,我可以看到我的进度条、搜索栏和文本视图,一切都很好,但是当我启动应用程序时(在 SDK 19 上) ,单选按钮不会改变选择的照片,我什至看不到搜索栏、进度条和文本视图。

这是 XML:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:background="@drawable/appbackground">

    <ImageView
        android:layout_
        android:layout_
        android:src="@drawable/avatar"
        android:layout_gravity="center"
        android:layout_marginBottom="200sp"/>

    <ImageView
        android:id="@+id/element"
        android:layout_
        android:layout_
        android:layout_marginStart="135sp"
        android:layout_marginTop="195sp"
        android:src="@drawable/abc_vector_test"
        android:elevation="2sp"/>


    <RadioGroup
        android:id="@+id/radioG"
        android:layout_
        android:layout_
        android:layout_marginTop="400dp"
        android:background="@drawable/background"
        android:orientation="vertical">

        <RadioButton
            android:id="@+id/w"
            android:layout_
            android:layout_
            android:text="@string/Water"
            android:textColor="#03A9F4" />


        <RadioButton
            android:id="@+id/e"
            android:layout_
            android:layout_
            android:text="@string/Earth"
            android:textColor="#652F00" />


        <RadioButton
            android:id="@+id/f"
            android:layout_
            android:layout_
            android:text="@string/Fire"
            android:textColor="#FF5722" />


        <RadioButton
            android:id="@+id/a"
            android:layout_
            android:layout_
            android:text="@string/Air"
            android:textColor="#9C9C9C" />

    </RadioGroup>

    <TextView
        android:layout_
        android:layout_
        android:id="@+id/text"
        android:text="50%"
        android:gravity="center"
        android:layout_marginTop="570sp"
        android:textSize="40sp"/>


    <ProgressBar
        android:id="@+id/prog"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_
        android:layout_
        android:layout_marginTop="625sp" />

    <SeekBar
        android:id="@+id/seek"
        android:layout_
        android:layout_
        android:layout_marginTop="650sp"
        android:max="100"
        android:progress="50"
        android:thumb="@drawable/uncleiroh2" />


</FrameLayout>

这里是java:

package com.example.avatarphotos;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener, RadioGroup.OnCheckedChangeListener 

    private ImageView Element;
    private TextView textView;
    private ProgressBar progressBar;
   private RadioGroup radioGroup;
    private SeekBar seekBar;
    //private RadioButton air;
    //private RadioButton earth;
    //private RadioButton water;
    //private RadioButton fire;


    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Element = findViewById(R.id.element);
        textView=findViewById(R.id.text);
        progressBar=findViewById(R.id.prog);
        seekBar=findViewById(R.id.seek);
        radioGroup=findViewById(R.id.radioG);
        radioGroup.setOnCheckedChangeListener(this);
        seekBar.setOnSeekBarChangeListener(this);

    
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) 
        progressBar.setProgress(i);
        textView.setText(""+i+"%");
        Element.setImageAlpha((int)(i/100.0*255));
    
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) 

    
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) 

    



    @Override
    public void onCheckedChanged(RadioGroup radioGroup, int i) 
        switch (i)
            case 0:
                Element.setImageResource(R.drawable.water);
                break;
            case 1:
                Element.setImageResource(R.drawable.earth);
                break;
            case 2:
                Element.setImageResource(R.drawable.fire);
                break;
            case 3:
                Element.setImageResource(R.drawable.air);
                break;
        
    

      

设计照片: design 应用程序: app 并且在写这篇文章时我收到了这个错误消息,所以我不知道它是否真的相关: problem message

【问题讨论】:

【参考方案1】:

您为什么不尝试更新到更新的 ADB 版本的 ADB(或者更新整个 Android Studio,也许)。

【讨论】:

更新后仍然无法使用。【参考方案2】:

您已将所有这些都放入具有较大固定边距的FrameLayout。您丢失的视图可能在屏幕外(android:layout_marginTop="625sp" 表示您将其偏移了很多;另外,您应该使用dp)。它在预览中起作用的原因可能是因为您正在预览它在更大屏幕上的样子。

我假设您这样做了,否则 FrameLayout 只会将所有视图放在一起。您可以通过使用ConstraintLayoutRelativeLayoutLinearLayout 的某种组合来构建您的用户界面来解决这个问题。相对于彼此和屏幕定位视图,而不是大的固定偏移。

【讨论】:

以上是关于使用radioButtons在照片之间切换并使用进度条,textView和seek bar来改变所选照片的​​不透明度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

c#高手进.关于c#里面的radioButton控件怎么用?

RadioGroup结合RadioButton使用切换Fragment片段

在 Android 中的 RadioButton 与其标签之间添加边距?

求助RadioButton的动态添加

Activity内切换fragment实现底部菜单切换遇到的坑

Knockout + Radiobuttons - 在取消选中时将值切换回“false”