RelativeLayout 和带有 layout_toLeftOf 属性的视图在 DialogFragment 中不起作用
RelativeLayout and view wiith layout_toLeftOf attribute not working in DialogFragment
我有一个在主题为 activity 的对话框中使用的布局。这正确地呈现了。但是,它现在呈现在一个对话框片段中,并且一些视图相互堆叠。我尝试在顶层添加一个线性布局,因为我发现 post 建议这样做,但这没有帮助。似乎跳过了将项目标记到其他东西的右侧或左侧的代码,我不确定为什么。感谢任何指导或帮助。
听筒布局如下所示:
android 工作室渲染看起来正确:
布局文件如下
<?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">
<RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Delete_Overlay"
android:textColor="#FF000000"
android:onClick="btn_Delete_TextBox_Click"/>
<EditText
android:id="@+id/text_edit_view"
android:layout_below="@id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="@android:color/white"
android:background="#00000000"/>
<Button
android:id="@+id/font_Style_Button"
android:layout_below="@id/text_edit_view"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Font @amp; Style"
android:onClick="fontStyleBtnClick"/>
<TextView
android:id="@+id/center_point_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/confirm_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toLeftOf="@id/center_point_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Confirm_Text_Edit_Changes"
android:onClick="btn_Confirm_Changes_Click"/>
<Button
android:id="@+id/cancel_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toRightOf="@id/center_point_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Cancel_Text_Edit"
android:onClick="btn_Cancel_Changes_Click"/>
</RelativeLayout>
</LinearLayout>
Java 在对话框片段中显示布局的代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.dialog_fragment_text_properties, container, false);
}
Java 创建请求以显示对话框的代码
void showDialog(dialogTypeEnum dialogType, Bundle tempBundle) {
mStackLevel++;
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag(dialogType.stringValue);
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment newFragment;
switch (dialogType){
case DIALOG_FRAGMENT_FONT_PROPERTIES:
newFragment = TextPropertiesDialogFragment.newInstance(tempBundle);
break;
case DIALOG_FRAGMENT_TEXT_EDIT:
newFragment = TextEditDialogFragment.newInstance(tempBundle);
break;
case DIALOG_FRAGMENT_TEXT_PROPERTIES:
//This call
newFragment = TextPropertiesDialogFragment.newInstance(tempBundle);
break;
default:
newFragment = null;
break;
}
if (newFragment != null ){
newFragment.show(ft, dialogType.stringValue);
}
}
我不得不为此实施变通办法,因为我找不到它不起作用的原因。解决方法是将两个按钮放在相对布局内的线性布局中,并删除按钮用来对齐的空白文本视图。这工作正常,但不太理想。
更改代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Delete_Overlay"
android:textColor="#FF000000"
android:onClick="btn_Delete_TextBox_Click"/>
<EditText
android:id="@+id/text_edit_view"
android:layout_below="@id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="@android:color/white"
android:background="#00000000"/>
<Button
android:id="@+id/font_Style_Button"
android:layout_below="@id/text_edit_view"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Font @amp; Style"
android:onClick="fontStyleBtnClick"/>
<!-- <TextView
android:id="@+id/center_point_text_edit_df"
android:layout_below="@id/font_Style_Button"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "/>
<Button
android:id="@+id/confirm_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toStartOf="@id/center_point_text_edit_df"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Confirm_Text_Edit_Changes"
android:onClick="btn_Confirm_Changes_Click"/>
<Button
android:id="@+id/cancel_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toEndOf="@id/center_point_text_edit_df"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Cancel_Text_Edit"
android:onClick="btn_Cancel_Changes_Click"/> -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:layout_below="@id/font_Style_Button"
>
<Button
android:id="@+id/confirm_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Confirm"
android:onClick="btn_Confirm_Changes_Click"/>
<Button
android:id="@+id/cancel_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel"
android:onClick="btn_Cancel_Changes_Click"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
我有一个在主题为 activity 的对话框中使用的布局。这正确地呈现了。但是,它现在呈现在一个对话框片段中,并且一些视图相互堆叠。我尝试在顶层添加一个线性布局,因为我发现 post 建议这样做,但这没有帮助。似乎跳过了将项目标记到其他东西的右侧或左侧的代码,我不确定为什么。感谢任何指导或帮助。
听筒布局如下所示:
android 工作室渲染看起来正确:
布局文件如下
<?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">
<RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Delete_Overlay"
android:textColor="#FF000000"
android:onClick="btn_Delete_TextBox_Click"/>
<EditText
android:id="@+id/text_edit_view"
android:layout_below="@id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="@android:color/white"
android:background="#00000000"/>
<Button
android:id="@+id/font_Style_Button"
android:layout_below="@id/text_edit_view"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Font @amp; Style"
android:onClick="fontStyleBtnClick"/>
<TextView
android:id="@+id/center_point_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/confirm_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toLeftOf="@id/center_point_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Confirm_Text_Edit_Changes"
android:onClick="btn_Confirm_Changes_Click"/>
<Button
android:id="@+id/cancel_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toRightOf="@id/center_point_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Cancel_Text_Edit"
android:onClick="btn_Cancel_Changes_Click"/>
</RelativeLayout>
</LinearLayout>
Java 在对话框片段中显示布局的代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.dialog_fragment_text_properties, container, false);
}
Java 创建请求以显示对话框的代码
void showDialog(dialogTypeEnum dialogType, Bundle tempBundle) {
mStackLevel++;
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag(dialogType.stringValue);
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment newFragment;
switch (dialogType){
case DIALOG_FRAGMENT_FONT_PROPERTIES:
newFragment = TextPropertiesDialogFragment.newInstance(tempBundle);
break;
case DIALOG_FRAGMENT_TEXT_EDIT:
newFragment = TextEditDialogFragment.newInstance(tempBundle);
break;
case DIALOG_FRAGMENT_TEXT_PROPERTIES:
//This call
newFragment = TextPropertiesDialogFragment.newInstance(tempBundle);
break;
default:
newFragment = null;
break;
}
if (newFragment != null ){
newFragment.show(ft, dialogType.stringValue);
}
}
我不得不为此实施变通办法,因为我找不到它不起作用的原因。解决方法是将两个按钮放在相对布局内的线性布局中,并删除按钮用来对齐的空白文本视图。这工作正常,但不太理想。
更改代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Delete_Overlay"
android:textColor="#FF000000"
android:onClick="btn_Delete_TextBox_Click"/>
<EditText
android:id="@+id/text_edit_view"
android:layout_below="@id/delete_text_overlay"
android:layout_centerHorizontal="true"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:textColor="@android:color/white"
android:background="#00000000"/>
<Button
android:id="@+id/font_Style_Button"
android:layout_below="@id/text_edit_view"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Font @amp; Style"
android:onClick="fontStyleBtnClick"/>
<!-- <TextView
android:id="@+id/center_point_text_edit_df"
android:layout_below="@id/font_Style_Button"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "/>
<Button
android:id="@+id/confirm_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toStartOf="@id/center_point_text_edit_df"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Confirm_Text_Edit_Changes"
android:onClick="btn_Confirm_Changes_Click"/>
<Button
android:id="@+id/cancel_text_edit"
android:layout_below="@id/font_Style_Button"
android:layout_toEndOf="@id/center_point_text_edit_df"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Cancel_Text_Edit"
android:onClick="btn_Cancel_Changes_Click"/> -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:layout_below="@id/font_Style_Button"
>
<Button
android:id="@+id/confirm_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Confirm"
android:onClick="btn_Confirm_Changes_Click"/>
<Button
android:id="@+id/cancel_text_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cancel"
android:onClick="btn_Cancel_Changes_Click"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>