1
當你點擊文本視圖時,我做了一個彈出窗口,我跟隨了一個指南如何創建彈出窗口,我工作正常,只是彈出窗口的位置不是我想要看起來,彈出窗口使其左上角顯示在點位置,但我希望左下角處於這樣的指定點,搜索後我發現重力對此負責,請參閱developer.android,但是當我改變重力Gravity.BOTTOM|Gravity.LEFT
彈出顯示文本彈出窗口顯示位置,改變重力給出錯誤的位置
彈出XML遠高於
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:id="@+id/popup"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:padding="7dp"
android:background="#d1a2a2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView37"
android:gravity="center"
android:textAlignment="gravity"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView41" />
</LinearLayout>
這裏是我的代碼有
vfy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//Open popup window
if (p != null)
showPopup(MainActivity.this, p);
}
});
這些方法
@Override
public void onWindowFocusChanged(boolean hasFocus) {
int[] location = new int[2];
TextView button = (TextView) findViewById(R.id.textView2);
// Get the x, y location and store it in the location[] array
// location[0] = x, location[1] = y.
button.getLocationOnScreen(location);
//Initialize the Point with x, and y positions
p = new Point();
p.x = location[0];
p.y = location[1];
}
//............
private void showPopup(final Activity context, Point p) {
// Inflate the popup_layout.xml
LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup);
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = layoutInflater.inflate(R.layout.popup, viewGroup);
// Creating the PopupWindow
final PopupWindow popup = new PopupWindow(context);
popup.setContentView(layout);
popup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
popup.setFocusable(true);
// Some offset to align the popup a bit to the right, and a bit down, relative to button's position.
int OFFSET_X = 30;
int OFFSET_Y = 30;
// Clear the default translucent background
popup.setBackgroundDrawable(new BitmapDrawable());
// Displaying the popup at the specified location, + offsets.
popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y);
// Getting a reference to Close button, and close the popup when clicked.
TextView close = (TextView) layout.findViewById(R.id.textView37);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popup.dismiss();
}
});
}
我使用showAtLocation()方法,但是當我改變重力 –
是R.layout.popup一樣的,你上面提到的xml它給了錯誤的位置。 –
是的,複製並粘貼 –