opt: layout inspector view
This commit is contained in:
@@ -9,8 +9,10 @@ import android.view.WindowManager;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.afollestad.materialdialogs.Theme;
|
||||
import com.stardust.app.DialogUtils;
|
||||
import com.stardust.enhancedfloaty.FloatyService;
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.ui.codegeneration.CodeGenerateDialog;
|
||||
import com.stardust.scriptdroid.ui.floating.FullScreenFloatyWindow;
|
||||
import com.stardust.view.accessibility.NodeInfo;
|
||||
import com.stardust.scriptdroid.ui.widget.BubblePopupMenu;
|
||||
@@ -82,22 +84,27 @@ public class LayoutHierarchyFloatyWindow extends FullScreenFloatyWindow {
|
||||
return;
|
||||
mBubblePopMenu = new BubblePopupMenu(mContext, Arrays.asList(
|
||||
mContext.getString(R.string.text_show_widget_infomation),
|
||||
mContext.getString(R.string.text_show_layout_bounds)));
|
||||
mBubblePopMenu.setOnItemClickListener(new BubblePopupMenu.OnItemClickListener() {
|
||||
@Override
|
||||
public void onClick(View view, int position) {
|
||||
mBubblePopMenu.dismiss();
|
||||
if (position == 0) {
|
||||
showNodeInfo();
|
||||
} else {
|
||||
showLayoutBounds();
|
||||
}
|
||||
mContext.getString(R.string.text_show_layout_bounds),
|
||||
mContext.getString(R.string.text_generate_code)));
|
||||
mBubblePopMenu.setOnItemClickListener((view, position) -> {
|
||||
mBubblePopMenu.dismiss();
|
||||
if (position == 0) {
|
||||
showNodeInfo();
|
||||
} else if (position == 1) {
|
||||
showLayoutBounds();
|
||||
} else {
|
||||
generateCode();
|
||||
}
|
||||
});
|
||||
mBubblePopMenu.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
mBubblePopMenu.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
}
|
||||
|
||||
private void generateCode() {
|
||||
DialogUtils.showDialog(new CodeGenerateDialog(mContext, mRootNode, mSelectedNode)
|
||||
.build());
|
||||
}
|
||||
|
||||
private void showLayoutBounds() {
|
||||
close();
|
||||
LayoutBoundsFloatyWindow window = new LayoutBoundsFloatyWindow(mRootNode);
|
||||
|
||||
@@ -47,6 +47,7 @@ public class NodeInfoView extends RecyclerView {
|
||||
"editable",
|
||||
"enabled",
|
||||
"focusable",
|
||||
"indexInParent",
|
||||
"longClickable",
|
||||
"row",
|
||||
"rowCount",
|
||||
|
||||
@@ -34,12 +34,7 @@ public class BubblePopupMenu extends PopupWindow {
|
||||
View view = View.inflate(context, R.layout.bubble_popup_menu, null);
|
||||
mLittleTriangle = view.findViewById(R.id.little_triangle);
|
||||
mRecyclerView = (RecyclerView) view.findViewById(R.id.list);
|
||||
mRecyclerView.setAdapter(new SimpleRecyclerViewAdapter<>(R.layout.bubble_popup_menu_item, options, new SimpleRecyclerViewAdapter.ViewHolderFactory<MenuItemViewHolder>() {
|
||||
@Override
|
||||
public MenuItemViewHolder create(View itemView) {
|
||||
return new MenuItemViewHolder(itemView);
|
||||
}
|
||||
}));
|
||||
mRecyclerView.setAdapter(new SimpleRecyclerViewAdapter<>(R.layout.bubble_popup_menu_item, options, MenuItemViewHolder::new));
|
||||
setContentView(view);
|
||||
setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
setOutsideTouchable(true);
|
||||
@@ -53,8 +48,8 @@ public class BubblePopupMenu extends PopupWindow {
|
||||
public void showAsDropDownAtLocation(View parent, int contentHeight, int x, int y) {
|
||||
int screenWidth = getContentView().getResources().getDisplayMetrics().widthPixels;
|
||||
int screenHeight = getContentView().getResources().getDisplayMetrics().heightPixels;
|
||||
int width = getContentView().getWidth();
|
||||
int height = getContentView().getHeight();
|
||||
int width = getContentView().getMeasuredWidth();
|
||||
int height = getContentView().getMeasuredHeight();
|
||||
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mLittleTriangle.getLayoutParams();
|
||||
if (x + width > screenWidth) {
|
||||
params.leftMargin = x + width - screenWidth;
|
||||
|
||||
Reference in New Issue
Block a user