【发布时间】:2017-07-06 13:24:07
【问题描述】:
我的目标是在左侧制作一个没有填充的圆形图像按钮,在右侧制作一个多行文本,其中两行具有不同的样式(颜色/字体)。像这样:
我的问题是:
- 不知道如何实现多行按钮文字
- 图像边角在左侧没有圆角
- 图片比要求的大
我的代码如下:
buttonshape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners android:radius="5dp" />
<solid android:color="#F7F7F7" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp" />
<size android:width="270dp"
android:height="60dp" />
</shape>
myActivity.xml:
<Button
android:id="@+id/parkingBtn"
android:layout_width="0dp"
android:layout_height="82dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/buttonshape"
android:drawableStart="@drawable/parking"
android:drawablePadding="20dp"
android:text="Parking"
android:textAlignment="viewStart"
android:textAllCaps="false"
android:textColor="@color/colorPrimary"
android:textDirection="ltr"
android:textSize="18sp"
android:cropToPadding="true"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/otherBtn" />
更新: 我改成 CardView,结果几乎没问题。感谢@pouya 的提示。问题是图像上看不到圆角。
card_layout.xml:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
card_view:cardCornerRadius="15dp"
card_view:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/buttonshape15"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:background="@drawable/parking" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:paddingStart="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:paddingTop="8dp"
android:text="Parking"
android:textColor="@color/colorPrimary"
android:textSize="24sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:text="Pay without coins" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
(我更改了边框颜色和半径以获得更好的可见性)
更新 2: 更接近最终的结果。现在边框出现了,只有阴影不见了:
layout.xml:
<LinearLayout xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/buttonshape15" >
<android.support.v7.widget.CardView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="15dp"
card_view:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:scaleType="fitXY"
android:background="@drawable/parking" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"
android:orientation="vertical"
android:paddingStart="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif"
android:paddingTop="6dp"
android:text="Parking"
android:textColor="@color/colorPrimary"
android:textSize="22sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="3dp"
android:text="Pay without coins"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
为了解决阴影问题,我尝试在 background.xml 中使用 layer-list,但它会产生难看的阴影。将所有内容再次包装在 CardView 中并设置高程可以得到更好的结果,但不如参考布局那么完美。
【问题讨论】:
-
你不能设计一个自定义布局并添加onClickListener
-
文本是一个完整的字符串吗?
-
使用自定义布局我能够解决多行问题,但图像角落仍然错误,并且我也丢失了按钮阴影。
-
文本是 2 个不同的字符串
标签: android android-layout button