ListView
custom の内側を回転させようとしていますpopupWindow
。以下は私のセットアップです:
ポップアップ XML は次のboard_dialog.xml
とおりです。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/boardll"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<ListView
android:id="@+id/boardoptions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/options_array_board" />
</RelativeLayout>
私のカスタムBoardPopup
クラス:
public class BoardPopup extends PopupWindow {
private static final String TAG = BoardPopup.class.getSimpleName();
Context context;
RelativeLayout ll;
ListView lv;
private OnSubmitListener mListener;
public BoardPopup (Context ctx, OnSubmitListener listener) {
super(ctx);
context = ctx;
mListener = listener;
setContentView(LayoutInflater.from(context).inflate(R.layout.board_dialog, null));
setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
View popupView = getContentView();
setFocusable(true);
lv = (ListView) popupView.findViewById(R.id.boardoptions);
ll = (RelativeLayout) popupView.findViewById(R.id.boardll);
}
public void show(View v) {
showAtLocation(v, Gravity.CENTER, 0, 0);
}
public interface OnSubmitListener {
void valueChanged(String name, String number);
}
public void fixDimensions() {
getContentView().setBackgroundColor(Color.RED); //to highlight views
ll.setRotation(90);
update(292,630); //These numbers are not meant to be constant
}
}
私のアクティビティでは、ポップアップを表示しonWindowFocusChanged
、ポップアップ内のビューの描画後の寸法を取得するためにオーバーライドする必要があります:
popup = new BoardPopup(c, MainGamePanel.this);
popupJustCreated = true;
popup.show(v);
.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (popup!=null && popupJustCreated) {
popup.fixDimensions();
popupJustCreated = false;
}
}
コメントアウトしてコメントインするll.setRotation(90);
と、すべてが正常に見えます。update(292,630);
fixDimensions()
に追加するとll.setRotation(90);
:
最後に、次を追加するとupdate(292,630);
:
最終的な画像で、レイアウトがポップアップを埋めないのはなぜですか? その灰色の領域はどのようなビューですか? これを正常に回転およびサイズ変更するにはどうすればよいですか?
私が試した他のいくつかのことは成功しませんでした:
LinearLayout
の代わりに使用RelativeLayout
wrap_content
とのすべての異なる組み合わせmatch_parent
- カスタムで基本的に同じことをする
DialogFragment