Ich habe 6 ImageButton in meiner Aktivität, ich setze Bilder durch meinen Code in ihnen (ohne XML).
Ich möchte, dass sie 75% des Schaltflächenbereichs abdecken. Da einige Bilder weniger Fläche abdecken, sind einige zu groß, um in den imageButton zu passen. Wie kann ich die Größe programmgesteuert ändern und anzeigen? Unten ist der Screenshot
unten ist die xml-datei
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp" >
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_topleft"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_topright"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_repeat"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_next"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
<LinearLayout
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_bottomleft"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
<ImageButton
android:layout_height="match_parent"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/button_bottomright"
android:layout_marginBottom="5sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="5sp"
android:layout_marginTop="0sp"
/>
</LinearLayout>
</LinearLayout>
und ein Ausschnitt aus myClass.java:
public void addImageButtons()
{
iB_topleft = (ImageButton) findViewById(R.id.button_topleft);
iB_topright = (ImageButton) findViewById(R.id.button_topright);
iB_bottomleft = (ImageButton) findViewById(R.id.button_bottomleft);
iB_bottomright = (ImageButton) findViewById(R.id.button_bottomright);
iB_next = (ImageButton) findViewById(R.id.button_next);
iB_repeat = (ImageButton) findViewById(R.id.button_repeat);
}
public void setImageNextAndRepeat()
{
iB_topleft .setImageResource(R.drawable.aa);
iB_topright.setImageResource(R.drawable.bb);
iB_bottomleft.setImageResource(R.drawable.cc);
iB_bottomright.setImageResource(R.drawable.dd);
iB_next.setImageResource(R.drawable.next);
iB_repeat.setImageResource(R.drawable.repeat);
}
Antworten:
Verwenden Sie
android:padding="20dp"
(passen Sie die Auffüllung nach Bedarf an), um zu steuern, wie viel das Bild auf der Schaltfläche einnimmt.Verwenden Sie a
android:scaleType="fitCenter"
, damit Android die Bilder skaliert undandroid:adjustViewBounds="true"
ihre Grenzen aufgrund der Skalierung anpasst.Alle diese Attribute können
ImageButton
zur Laufzeit jeweils im Code festgelegt werden. Meiner Meinung nach ist es jedoch viel einfacher, eine Vorschau in XML festzulegen und eine Vorschau anzuzeigen.Auch nicht verwendet
sp
für etwas anderes als Textgröße, wird es skaliert auf der Textgröße bevorzugt je die Benutzersätze, so dass Ihresp
Dimensionen größer sein werden als Sie gedacht , wenn der Benutzer eine „große“ Texteinstellung. Verwenden Siedp
stattdessen, da es nicht durch die bevorzugte Textgröße des Benutzers skaliert wird.Hier ist ein Ausschnitt davon, wie jede Schaltfläche aussehen sollte:
quelle
ImageButton
MethodensetScaleType(ImageView.ScaleType.CENTER)
setAdjustViewBounds(true)
dies programmgesteuert.Ich verwende den folgenden Code in
xml
quelle
Versuchen Sie,
android:scaleType="fitXY"
in i-Imagebutton xml zu verwendenquelle
Ich benutze
android:scaleType="fitCenter"
mit Zufriedenheit.quelle
Beziehen Sie sich auf den folgenden Link und versuchen Sie herauszufinden, was Sie wirklich wollen:
https://developer.android.com/reference/android/widget/ImageView.ScaleType.html
quelle
Ich habe kürzlich zufällig herausgefunden, dass Sie, da Sie mehr Kontrolle über eine ImageView haben, einen Onclicklistener für ein Bild festlegen können. Dies ist ein Beispiel für eine dynamisch erstellte Bildschaltfläche
quelle
In meinem Fall hat es gut funktioniert. Zuerst laden Sie ein Bild herunter, benennen es in ein Symbolbild um und suchen es im Zeichenordner. Sie können die Größe ändern, indem Sie
android:layout_width
oder einstellenandroid:layout_height
. Endlich haben wirquelle
Sie können Ihr ImageButton-Widget wie ich erstellen. In meinem Fall brauchte ich ein Widget mit einer festen Symbolgröße. Beginnen wir mit benutzerdefinierten Attributen:
Die Widget-Klasse ist recht einfach (der wichtigste Punkt ist das Auffüllen von Berechnungen in der onLayout- Methode):
Und zum Schluss sollten Sie Ihr Widget folgendermaßen verwenden:
quelle