Sta*_*tan 5 android relativelayout dialogfragment
我有一个关于对话框RelativeLayout
.它在普通活动中正常工作,但当我决定将其移入时DialogFragment
,大多数对齐规则停止工作.这是布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="250dp" >
<TextView
android:id="@+id/label_copyright"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="20dp"
android:text="Copyright (c) 2013 Copyright"
android:textSize="8dp" />
<TextView
android:id="@+id/label_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_above="@+id/label_copyright"
android:layout_marginTop="2dp"
android:text="@null" />
<TextView
android:id="@+id/label_app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/label_version"
android:layout_centerHorizontal="true"
android:layout_marginBottom="2dp"
android:text="Application Name"
android:textSize="25dp" />
<ImageView
android:id="@+id/image_app_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/label_app_name"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:src="@drawable/field_public_required" />
<TextView
android:id="@+id/label_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/label_copyright"
android:layout_marginTop="30dp"
android:gravity="center"
android:autoLink="web"
android:text="application description with more details" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
以下是它应该如何工作,它实际上是有效的,所以在一个活动中(Eclipse图形布局截图):
以下是使用片段运行应用程序时的外观:
显然,只有第一个视图按预期居中,而其他所有视图都被推到了顶部.无论minHeight
我在布局中指定哪个,行为总是相同的.
实例化对话框的代码非常简单:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.about, null);
try
{
TextView t = (TextView)view.findViewById(R.id.label_version);
t.setText(getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0).versionName);
}
catch(NameNotFoundException e)
{
}
return new AlertDialog.Builder(getActivity())
.setView(view)
.setTitle(R.string.about)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
}
}
)
.create();
}
Run Code Online (Sandbox Code Playgroud)
有什么问题以及如何解决?
将 XML 布局更改为:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/imageViewApplicationImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textViewApplicationName"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textViewApplicationDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textViewApplicationCopyright"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这里重要的部分是设置gravity
属性,以便所有小部件都将在视图中居中。该gravity
属性设置线性布局的子视图的位置。
归档时间: |
|
查看次数: |
1265 次 |
最近记录: |