2017-06-03 5 views
1

In Constraint Layout zu sein, wenn ich das Bild wollen horizontal und am oberen Rand des Bildschirms in der Mitte sein, dann kann ich dies tuneine Bildgröße machen bestimmte Prozent von der Bildschirmgröße

<android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="10dp"> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/image" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      android:id="@+id/imageView" /> 
</android.support.constraint.ConstraintLayout> 

Wie kann ich die Bildbreite und -höhe auf 25% der Bildschirmbreite und -höhe einstellen? Ist das machbar?

Danke

Antwort

0

Update:

mit neuen ConstrainLayout 1.1.0 ist es eine viel schönere Art und Weise umgesetzt worden, dies zu tun!

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <ImageView 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:background="#ffff0000" 

     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent" 

     app:layout_constraintWidth_percent=".25" 
     app:layout_constraintWidth_default="percent" 

     app:layout_constraintHeight_percent=".25" 
     app:layout_constraintHeight_default="percent" 
     /> 

</android.support.constraint.ConstraintLayout> 

Oder

Sie können Richtlinien legen mit Prozentsatz und dann die Image ihnen Zwang. Es wäre schön, einen sauberere Weg, um es zu tun, aber ich denke, es ist immer noch viel besser als verschachteltes Linearlayout mit Gewichten

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <ImageView 
     android:id="@+id/imageView" 
     app:layout_constraintLeft_toLeftOf="@id/guideline_left" 
     app:layout_constraintRight_toRightOf="@id/guideline_right" 
     app:layout_constraintTop_toTopOf="@id/guideline_top" 
     app:layout_constraintBottom_toBottomOf="@id/guideline_bottom" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:background="#ffff0000"/> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guideline_left" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.33"/> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guideline_right" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.66"/> 


    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guideline_top" 
     android:orientation="horizontal" 
     app:layout_constraintGuide_percent="0.33"/> 

    <android.support.constraint.Guideline 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/guideline_bottom" 
     android:orientation="horizontal" 
     app:layout_constraintGuide_percent="0.66"/> 

</android.support.constraint.ConstraintLayout> 
+0

Oh das ist soo cool. Schließlich haben sie den Prozentsatz, aber ist dies in der Support-Bibliothek? – Snake

+0

Es ist wirklich cool, ich glaube, ich werde mich endlich von LinearLayout verabschieden. Es ist in der Version 1.1.0, die jetzt in der Betaversion ist, Sie können es aber sehr leicht verwenden, [lesen Sie hier] (https://androidstudio.googleblog.com/2017/05/constraintlayout-110-beta-1-release. html) – lelloman

+0

Ja das gleiche hier. Ich denke, dass wir kein anderes Layout benötigen, wenn wir Prozentsätze haben und auf diese Weise können wir einfach mehrere Bildschirme einfacher unterstützen. Ich klickte auf den Link, es gibt keine Informationen über die Nutzung neben den 2 Zeilen .. Wenn es in der Beta ist, können wir es in Apps auf Geräten mit 4.1 – Snake

0

Sie es programmatisch wie folgt einstellen: -

ImageView image_view = (ImageView) findViewById(R.id.image_view); 
calulate(image_view); 



private void calulate(View v) 
{ 
    int imgWidth = this.getResources().getDisplayMetrics().widthPixels; 
    int imgHeight = this.getResources().getDisplayMetrics().heightPixels; 
    v.getLayoutParams().height = (int) (0.25*imgHeight); 
    v.getLayoutParams().width = (int) (0.25*imgWidth); 
} 
0

Mit jeder Ansicht, Android eine Überschreibung Methode (onMeasure) bereitstellen, in dem es 2 Parameter (int widthMeasureSpec, int heightMeasureSpec), Sie können Höhe Breite nach Ihrer Anforderung zurückgeben. Beispiel: Wenn Sie möchten, height = Breite bedeutet eine quadratische Größe Ansicht Sie Höhe und Breite wie diese zurückgeben kann:

@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
{ 
    super.onMeasure(heightMeasureSpec, heightMeasureSpec); 
} 

Sie können Ihre benutzerdefinierte Ansicht für diese erstellen: Beispiel: Erstellen Sie eine Klassennamen CustomImageView erstreckt sich mit Image

public class CustomImageView extends ImageView 
{ 

    @Override  
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
    { 
     super.onMeasure(heightMeasureSpec, heightMeasureSpec); 

     // you can set this as per percentage also. For example: 
     //"heightMeasureSpec * 50 /100" ---- the height will be 50% of the 
     //view's width. 
    } 

} 

Verwenden Sie diese in Ihrem Layout wie folgt aus:

<CustomImageView  
    android:id="@+id/imageView"  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content" 
    android:src="@drawable/ic_launcher"  
/> 
Verwandte Themen