以下XML代码无法将ImageView集中在LinearLayout中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/myimg"
android:layout_width="36dip"
android:layout_height="36dip"
android:scaleType="fitXY"
android:layout_gravity="center_horizontal"
android:background="@drawable/my_background"
/>
</LinearLayout>
这是令人惊讶地工作的RelativeLayout代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/myimg"
android:layout_width="36dip"
android:layout_height="36dip"
android:scaleType="fitXY"
android:layout_centerHorizontal="true"
android:background="@drawable/my_background"
/>
</RelativeLayout>
有人可以告诉我为什么吗?谢谢!
答案 0 :(得分:32)
您必须在LinearLayout上设置垂直方向
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/myimg"
android:layout_width="36dip"
android:layout_height="36dip"
android:scaleType="fitXY"
android:layout_gravity="center_horizontal"
android:background="@drawable/my_background"
/>
答案 1 :(得分:24)
很抱歉,但上面的代码对我不起作用,所以我发布了适用于我的代码
<?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"
android:background="@color/colorPrimary"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/ivPic"
android:layout_width="70dp"
android:layout_height="70dp" />
</LinearLayout>
我希望对有需要的人有所帮助。
答案 2 :(得分:7)
通常对我有用的是,我将imageview包装在RelativeLayout中,然后进入LinearLayout,确保relativelayout的height和width属性与linearLayout匹配。并且您知道如何将imageview保持在relativelayout的中心。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
<ImageView
android:id="@+id/myimg"
android:layout_width="36dip"
android:layout_height="36dip"
android:scaleType="fitXY"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:background="@drawable/my_background"
/>
</RelativeLayout>
</LinearLayout>
答案 3 :(得分:4)
<LinearLayout
android:orientation="horizontal"
android:layout_width="0dp"
android:layout_weight="0.50"
android:gravity="center"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/addToDateOrReceipt"
android:layout_width="25dp"
android:layout_height="25dp" />
</LinearLayout>
将LineraLayout的android:gravity属性设置为居中。
答案 4 :(得分:2)
问题是因为你在LinearLayout中使用android:layout_width =“fill_parent”。 将其更改为“wrap_content”
答案 5 :(得分:2)
让UI保持简洁易懂。
<LinearLayout
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/phone_auth_bg"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/imageMobile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/phone" />
</RelativeLayout>
如果需要在图片部分更改任何属性,则可以进行更改,因为它不会导致布局UI发生任何更改。
答案 6 :(得分:0)
您也可以使用FrameLayout并在其中使用LinearLayout,因此更容易管理,更容易将其放在视图的中心。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />
<ImageView
android:id="@+id/ivPic"
android:layout_width="70dp"
android:layout_height="70dp" />
</LinearLayout>
</FrameLayout>
我知道你在询问如何将一个imageview集中在一个布局中但是想提供另一种方法来实现它
答案 7 :(得分:0)
尝试在LinearLayout中使用layout_gravity和gravity属性,以使所有子项在默认情况下居中。
例如,
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SplashActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:foregroundGravity="center"
app:srcCompat="@mipmap/app_icon_foreground">
</ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Authenticator"
android:textColor="#FFF"
android:textSize="40dp"
android:layout_margin="10dp">
</TextView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
以上是启动屏幕活动。因此,有两个子级-ImageView和TextView。两者都居中对齐。