Ich wollte das ImageView-Bild im Vollbildmodus anzeigen (das Seitenverhältnis bleibt gleich) und die Schaltfläche direkt darunter platzieren, aber ... Wenn Sie es horizontal drehen, wird die Schaltfläche ausgeblendet. Wenn Sie das Layout entsprechend dem horizontalen Bildschirm ändern, verschiebt sich die Position der Schaltfläche, wenn Sie sie vertikal drehen. Ich wollte nur eine XML für das Layout haben, deshalb habe ich beschlossen, die Größe der ImageView in der Quelle dynamisch zu ändern.
--Layout verwendet ConstraintLayout --ImageView-Einstellungen:
app: layout_constraintVertical_chainStyle =" gepackt "
an, um die Schaltflächen anzuhängenActivity
onConfigurationChanged
wird aufgerufen, wenn sich die vertikale und horizontale Ausrichtung ändert. Dabei wurde das Layout von ImageView aktualisiert.activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:padding="8dp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintVertical_chainStyle="packed"
app:srcCompat="@drawable/ic_launcher_background" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
ImageView imageView;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//UI-Erfassung
imageView = findViewById(R.id.imageView);
button = findViewById(R.id.button);
//Holen Sie sich vorerst die Orientierung beim Start
int orientation = getResources().getConfiguration().orientation;
UpdateLayout(orientation); //Layout-Update
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int orientation = newConfig.orientation; //Orientierung bekommen
UpdateLayout(orientation); //Layout-Update
}
/**
*Layout-Update
* @param Orientierung Orientierung
*/
protected void UpdateLayout(int orientation){
//ImageView LayoutParam-Erfassung
LayoutParams param = imageView.getLayoutParams();
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
//Im Hochformat
Log.d("UpdateLayout", "Vertikale Ausrichtung");
param.height = LayoutParams.WRAP_CONTENT;
param.width = 0;
}
else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
//Bei seitlicher Ausrichtung
Log.d("UpdateLayout", "Seitwärts");
param.height = 0;
param.width = LayoutParams.WRAP_CONTENT;
}
imageView.setLayoutParams(param);
}
}
Quer- oder Hochformat auf Android bestimmen Zeigen Sie die volle Bildschirmbreite unter Android an, während Sie das Seitenverhältnis des Bildes beibehalten https://techblog.zozo.com/entry/constraint_layout
Recommended Posts