将 ImageView 放置在居中按钮的左侧
Placing ImageView to the left of centered buttons
我正在尝试将 ImageView 对象放置在线性布局对象(即两个按钮的父级)的左侧。我基本上想要两个按钮与屏幕水平居中,图像位置位于居中按钮的左侧。我仍然希望按钮保持水平居中,放置的图像视图不应该居中,只是放在一边。
任何建议都非常棒。我可能一直在用错误的布局来解决我的问题,但这是我尝试过的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/gameSettingsContainer"
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"
android:fitsSystemWindows="true"
tools:context="com.example.vb1115.multchoicequestion.LaunchScreen"
android:orientation="vertical"
android:gravity="center_horizontal">
<LinearLayout
android:id="@+id/buttonContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ToggleButton android:id="@+id/mathButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Math"
android:textOn="Math"
android:text="Math"/>
<ToggleButton android:id="@+id/bioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Biology"
android:textOn="Biology"
android:text="Biology"/>
</LinearLayout>
<ImageView
android:id="@+id/animatedArrow"
android:src="@mipmap/green_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/buttonContainer"/>
</RelativeLayout>
虽然我没有 Android Studio 可以测试,但我已经可以做出一些假设...
1st,无需为根 RelativeLayout 使用 android:orientation="vertical"
或 android:gravity="center_horizontal"
...
2,要定位 2 个 children 元素,请对 LinearLayout 使用 android:layout_centerHorizontal
,并为您的 ImageView 保留 android:layout_alignParentLeft
...
这应该会开始好一点...主要思想是在 RelativeLayout 中让 children 决定它们的位置通常更有效...希望这会有所帮助。
这里解决
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/gameSettingsContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<LinearLayout
android:id="@+id/buttonContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ToggleButton
android:id="@+id/mathButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Math"
android:textOff="Math"
android:textOn="Math"/>
<ToggleButton
android:id="@+id/bioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Biology"
android:textOff="Biology"
android:textOn="Biology"/>
</LinearLayout>
<ImageView
android:id="@+id/animatedArrow"
android:layout_toStartOf="@+id/buttonContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/green_arrow"/>
</RelativeLayout>
没有 android 个工作室进行测试:
要使 LinearLayout 在 RelativeLayout 中居中,请使用 Layout_centerHorizontal="true"
<LinearLayout
android:id="@+id/buttonContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true">
要使每个按钮均匀分布并居中,请使用 layout_weight="1"(因此每个按钮具有相同的权重)和 gravity="center_horizontal"
<ToggleButton android:id="@+id/mathButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Math"
android:textOn="Math"
android:text="Math"
android:layout_weight="1"
android:layout_gravity="center_horizontal"/>
<ToggleButton android:id="@+id/bioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Biology"
android:textOn="Biology"
android:text="Biology"
android:layout_weight="1"
android:layout_gravity="center_horizontal"/>
然后将 ImageView 放置到 layout_toStartOf 你的 buttonContainer
<ImageView
android:id="@+id/animatedArrow"
android:src="@mipmap/green_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@+id/buttonContainer">
我正在尝试将 ImageView 对象放置在线性布局对象(即两个按钮的父级)的左侧。我基本上想要两个按钮与屏幕水平居中,图像位置位于居中按钮的左侧。我仍然希望按钮保持水平居中,放置的图像视图不应该居中,只是放在一边。
任何建议都非常棒。我可能一直在用错误的布局来解决我的问题,但这是我尝试过的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/gameSettingsContainer"
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"
android:fitsSystemWindows="true"
tools:context="com.example.vb1115.multchoicequestion.LaunchScreen"
android:orientation="vertical"
android:gravity="center_horizontal">
<LinearLayout
android:id="@+id/buttonContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ToggleButton android:id="@+id/mathButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Math"
android:textOn="Math"
android:text="Math"/>
<ToggleButton android:id="@+id/bioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Biology"
android:textOn="Biology"
android:text="Biology"/>
</LinearLayout>
<ImageView
android:id="@+id/animatedArrow"
android:src="@mipmap/green_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/buttonContainer"/>
</RelativeLayout>
虽然我没有 Android Studio 可以测试,但我已经可以做出一些假设...
1st,无需为根 RelativeLayout 使用 android:orientation="vertical"
或 android:gravity="center_horizontal"
...
2,要定位 2 个 children 元素,请对 LinearLayout 使用 android:layout_centerHorizontal
,并为您的 ImageView 保留 android:layout_alignParentLeft
...
这应该会开始好一点...主要思想是在 RelativeLayout 中让 children 决定它们的位置通常更有效...希望这会有所帮助。
这里解决
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/gameSettingsContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<LinearLayout
android:id="@+id/buttonContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ToggleButton
android:id="@+id/mathButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Math"
android:textOff="Math"
android:textOn="Math"/>
<ToggleButton
android:id="@+id/bioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Biology"
android:textOff="Biology"
android:textOn="Biology"/>
</LinearLayout>
<ImageView
android:id="@+id/animatedArrow"
android:layout_toStartOf="@+id/buttonContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/green_arrow"/>
</RelativeLayout>
没有 android 个工作室进行测试:
要使 LinearLayout 在 RelativeLayout 中居中,请使用 Layout_centerHorizontal="true"
<LinearLayout
android:id="@+id/buttonContainer"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true">
要使每个按钮均匀分布并居中,请使用 layout_weight="1"(因此每个按钮具有相同的权重)和 gravity="center_horizontal"
<ToggleButton android:id="@+id/mathButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Math"
android:textOn="Math"
android:text="Math"
android:layout_weight="1"
android:layout_gravity="center_horizontal"/>
<ToggleButton android:id="@+id/bioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="Biology"
android:textOn="Biology"
android:text="Biology"
android:layout_weight="1"
android:layout_gravity="center_horizontal"/>
然后将 ImageView 放置到 layout_toStartOf 你的 buttonContainer
<ImageView
android:id="@+id/animatedArrow"
android:src="@mipmap/green_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@+id/buttonContainer">