Verwenden von radioButtons zum Wechseln zwischen Fotos und Verwenden der Fortschrittsleiste, der Textansicht und der Suchleiste zum Ändern der Deckkraft des ausgewählten Fotos [Duplikat]

Nov 23 2020

Ich bin ein Student, der dieses Jahr jetzt Android Studio mit Java lernt. Ich habe letzte Woche etwas über die Fortschrittsanzeige, die Suchleiste und die Optionsfelder erfahren. Meine Hausaufgabe besteht darin, mithilfe von Optionsfeldern zwischen Fotos zu wechseln und mithilfe einer Fortschrittsleiste, textView (für den Prozentsatz) und einer Suchleiste die Deckkraft des ausgewählten Fotos zu ändern.

Ich habe versucht, so gut ich konnte, und wenn ich mir "Design" anschaue, sehe ich meine Fortschrittsanzeige, Suchleiste und Textansicht, und alles ist gut, aber wenn ich die App (auf SDK 19) starte, das Radio Schaltflächen ändern das ausgewählte Foto nicht und ich kann die Suchleiste, die Fortschrittsleiste und die Textansicht nicht einmal sehen.

Hier ist das 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_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:background="@drawable/appbackground">

    <ImageView
        android:layout_width="318dp"
        android:layout_height="353dp"
        android:src="@drawable/avatar"
        android:layout_gravity="center"
        android:layout_marginBottom="200sp"/>

    <ImageView
        android:id="@+id/element"
        android:layout_width="137dp"
        android:layout_height="128dp"
        android:layout_marginStart="135sp"
        android:layout_marginTop="195sp"
        android:src="@drawable/abc_vector_test"
        android:elevation="2sp"/>


    <RadioGroup
        android:id="@+id/radioG"
        android:layout_width="wrap_content"
        android:layout_height="133dp"
        android:layout_marginTop="400dp"
        android:background="@drawable/background"
        android:orientation="vertical">

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


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


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


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

    </RadioGroup>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        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_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="625sp" />

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


</FrameLayout>

und hier ist der 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 Foto: Design App: App und nun, während ich dies schreibe, habe ich diese Fehlermeldung erhalten, so dass ich nicht weiß, ob es wirklich verwandt ist: Problemmeldung

Antworten

FabianMontossi Nov 23 2020 at 23:02

Warum versuchen Sie nicht, auf eine neuere ADB-Version von ADB zu aktualisieren (oder vielleicht das gesamte Android Studio zu aktualisieren)?

RyanM Nov 24 2020 at 10:29

Sie haben all dies in einen FrameLayoutmit großen festen Rändern gesetzt. Ihre fehlenden Ansichten sind wahrscheinlich außerhalb des Bildschirms ( android:layout_marginTop="625sp"bedeutet, dass Sie sie um einiges versetzen; Sie sollten sie auch verwenden dp). Der Grund, warum es in der Vorschau funktioniert, liegt wahrscheinlich darin, dass Sie eine Vorschau anzeigen, wie es auf einem größeren Bildschirm aussehen würde.

Ich gehe davon aus, dass Sie dies getan haben, da FrameLayout ansonsten nur alle Ansichten übereinander legt. Sie können dies lösen, indem Sie Ihre Benutzeroberfläche mit ConstraintLayoutoder einer Kombination aus RelativeLayoutund erstellen LinearLayout. Positionieren Sie die Ansichten relativ zueinander und zum Bildschirm, nicht bei großen festen Offsets.