Android-position popupmenu
Ich versuche eine android app, wo das klicken auf eine Schaltfläche löst ein popupmenu
. Die popupmenu
erzeugt wird, die aber nicht an der richtigen Stelle. Der code ist wie folgt:
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/genderMale"
android:title="Male"
/>
<item
android:id="@+id/genderFemale"
android:title="Female"
/>
</group>
</menu>
Die Funktion zum ausführen der popup ist wie folgt:
public void showGenderPopup(View v)
{
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.gender_popup, popup.getMenu());
popup.show();
}
Hier die popupmenu
erstellt wird, die knapp unterhalb der textview
wenn ich bin klicken. Ich will, dass es erzeugt in der Mitte des Bildschirms.
Wie gehen Sie vor?
InformationsquelleAutor Prakhar Mohan Srivastava | 2015-01-22
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als von den docs sagt :
Als ich erraten kann, dass die "Ansicht v"
ist die TextView Sie klicken, die gebunden ist an die Methode, die, wenn darauf geklickt wird, was bedeutet, das PopupMenu wird zeigen rechts unten die TextView.
Würden Sie nicht Ihr Ziel erreichen, mit einem Dialog? Für eine individuelle AlertDialog, die Sie gerade brauchen, um verwenden Sie die Methode
den AlertDialog.Generator , vor dem erstellen der Dialog selbst.
Für Ihre benutzerdefinierte Ansicht, die Sie entweder Folgen zwei Möglichkeiten:
XML:
Erstellen Sie Ihre XML-layout-Datei und dann mit dem inflater auf anwenden, um die XML-Layout über eine Ansicht customView Objekt. (layout-Datei aufgerufen wird customDialog.xml als ein Beispiel)
DYNAMISCH :
Verwende ich LinearLayout als Beispiel.
Um das Dialogfeld erstellen Sie dann diesen code verwenden,
AlertDialog
da Geb es mir die Wahl der Knöpfe und I o, die nicht wollen, um Sie zu benutzen. Jedoch, wenn es gelingt, gib mir radio-buttons werde ich es nutzen. Google wird es so schnell wie möglich.Denken Sie daran, Sie können immer wählen Sie eine benutzerdefinierte Ansicht für den Einsatz im Dialog. Ich selbst verwendet haben, ein Dialogfeld mit 4 radioButtons, die Schaffung mir eine einfach nutzbare SQLite tool zum Debuggen auf meine DB direkt auf die app. Müssen Sie erstellen eine Instanz einer benutzerdefinierten Ansicht, in der Sie hinzufügen die Optionsfelder, die Sie benötigen. Sobald Sie fertig sind, verwenden Sie b.setView(customView); wie beschrieben in den docs developer.android.com/reference/android/app/...
Okay. Also für die Definition einer
popupmenu
habe ich definiert ein benutzerdefiniertes Menü Für die Ansicht habe, werde ich so definieren Sie eine neue xml-Datei in den layout-Dateien und verwenden Sie es dann? Oder eine andere Möglichkeit?Sie können entweder Folgen Sie den XML-Weg, schaffen es dann mit dem inflater auf anwenden, um die XML-Layout über eine Ansicht customView; Objekt.
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View customView = inflater.inflate(R.layout.customDialog, null); b.setView(customView);
Oder Sie können es dynamisch. Ich verwende LinearLayout als Beispiel.LinearLayout linearLayout = new LinearLayout(context); RadioButton radioBtn = new RadioButton(context); linearLayout.addView(radioBtn);
Könnten Sie fügen Sie diese, um Ihre Antwort für eine bessere Lesbarkeit. Es würde auch zur Verbesserung der Qualität f deine Antwort, denke ich.
InformationsquelleAutor FrancescoC
verwenden Sie obigen code. Die Schwerkraft haben viele Optionen wie center/Links/rechts prüfen Sie die Dokumentation einmal
setzen der text-Ansicht Breite match_parent und dann mal versuchen.
Versucht. Keinerlei Veränderung :/
post ur xml-einmal
funktioniert nur mit API 19+ Liebe all diese Kommentare, dass vergessen über Kontext...
InformationsquelleAutor RamBabu Pudari