如何将对象与中心对齐,并在其左侧放置图像?
How can i allign an object to the center with an image to the left of it?
这是我想要的:
在 iOS 中这太简单了,但是 android 这似乎是不可能的。无论如何,我都希望文本框位于屏幕中心。当我添加图像时,文本框会移动,即使它们是居中对齐的,而图像不是。我希望图标彼此居中,但这似乎也很困难,除非它们处于相同的布局中。我应该把它们都放在同一个相对布局中吗?
我将主布局设置为线性布局,使用权重为所有内容提供适当的高度尺寸,并使用单独的相对或线性布局进行加权。这是公认的模式吗?
这是图标 textViews 和 textEdits 之一的示例。
<RelativeLayout
android:id="@+id/passwordRelativeLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="83"
android:gravity="center">
<ImageView
android:id="@+id/passwordImageView"
android:layout_width="40dp"
android:layout_height="40dp"
android:adjustViewBounds="true"
android:contentDescription="@string/email_ph"
android:gravity="center_horizontal"
android:src="@mipmap/lock_icon"
android:layout_alignParentBottom="true"
android:layout_toStartOf="@+id/passwordTextView" />
<TextView
android:id="@+id/passwordTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/passwordEditText"
android:labelFor="@+id/passwordEditText"
android:text="@string/password"
android:textColor="@color/white"
android:textSize="24sp" />
<EditText
android:id="@+id/passwordEditText"
android:layout_width="500dp"
android:layout_height="45dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_below="@+id/passwordTextView"
android:layout_gravity="center_horizontal"
android:background="@mipmap/text_box_background"
android:gravity="center"
android:inputType="textPassword" />
</RelativeLayout>\
这没有边距设置,但我现在只关心获得像素完美居中设置。
首先,从 RelativeLayout
中删除 android:gravity="center"
属性,然后对要居中的孩子使用 android:layout_centerHorizontal="true"
(在本例中为 EditText
,也从中删除 android:layout_gravity="center_horizontal"
属性)。如果有帮助请告诉我
给你:应该只需要改变一些东西,比如 drawableLeft。将其更改为您的电子邮件 mipmap 并锁定 mipmap。除了您可以更改的几个不同的 id 和布局的背景之外,这应该可以工作。
Proof it works
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2.8"
android:text="Email"
android:textAlignment="viewStart"
android:textColor="@android:color/black"
android:textSize="20sp"
android:gravity="bottom"
/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2.8" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/edittext2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:drawableStart="@mipmap/ic_launcher"
android:inputType="text"
android:selectAllOnFocus="false"
android:textColor="@android:color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2.8"
android:text="Password"
android:textAlignment="viewStart"
android:textColor="@android:color/black"
android:textSize="20sp"
android:gravity="bottom"
/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2.8" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@mipmap/ic_launcher"
android:inputType="text"
android:textColor="@android:color/black" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>
这是我想要的:
在 iOS 中这太简单了,但是 android 这似乎是不可能的。无论如何,我都希望文本框位于屏幕中心。当我添加图像时,文本框会移动,即使它们是居中对齐的,而图像不是。我希望图标彼此居中,但这似乎也很困难,除非它们处于相同的布局中。我应该把它们都放在同一个相对布局中吗?
我将主布局设置为线性布局,使用权重为所有内容提供适当的高度尺寸,并使用单独的相对或线性布局进行加权。这是公认的模式吗?
这是图标 textViews 和 textEdits 之一的示例。
<RelativeLayout
android:id="@+id/passwordRelativeLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="83"
android:gravity="center">
<ImageView
android:id="@+id/passwordImageView"
android:layout_width="40dp"
android:layout_height="40dp"
android:adjustViewBounds="true"
android:contentDescription="@string/email_ph"
android:gravity="center_horizontal"
android:src="@mipmap/lock_icon"
android:layout_alignParentBottom="true"
android:layout_toStartOf="@+id/passwordTextView" />
<TextView
android:id="@+id/passwordTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignStart="@+id/passwordEditText"
android:labelFor="@+id/passwordEditText"
android:text="@string/password"
android:textColor="@color/white"
android:textSize="24sp" />
<EditText
android:id="@+id/passwordEditText"
android:layout_width="500dp"
android:layout_height="45dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_below="@+id/passwordTextView"
android:layout_gravity="center_horizontal"
android:background="@mipmap/text_box_background"
android:gravity="center"
android:inputType="textPassword" />
</RelativeLayout>\
这没有边距设置,但我现在只关心获得像素完美居中设置。
首先,从 RelativeLayout
中删除 android:gravity="center"
属性,然后对要居中的孩子使用 android:layout_centerHorizontal="true"
(在本例中为 EditText
,也从中删除 android:layout_gravity="center_horizontal"
属性)。如果有帮助请告诉我
给你:应该只需要改变一些东西,比如 drawableLeft。将其更改为您的电子邮件 mipmap 并锁定 mipmap。除了您可以更改的几个不同的 id 和布局的背景之外,这应该可以工作。 Proof it works
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2.8"
android:text="Email"
android:textAlignment="viewStart"
android:textColor="@android:color/black"
android:textSize="20sp"
android:gravity="bottom"
/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2.8" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/edittext2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:drawableStart="@mipmap/ic_launcher"
android:inputType="text"
android:selectAllOnFocus="false"
android:textColor="@android:color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2.8"
android:text="Password"
android:textAlignment="viewStart"
android:textColor="@android:color/black"
android:textSize="20sp"
android:gravity="bottom"
/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2.8" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@mipmap/ic_launcher"
android:inputType="text"
android:textColor="@android:color/black" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="10dp" />
</LinearLayout>