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]
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
Warum versuchen Sie nicht, auf eine neuere ADB-Version von ADB zu aktualisieren (oder vielleicht das gesamte Android Studio zu aktualisieren)?
Sie haben all dies in einen FrameLayout
mit 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 RelativeLayout
und erstellen LinearLayout
. Positionieren Sie die Ansichten relativ zueinander und zum Bildschirm, nicht bei großen festen Offsets.