android - 水平线问题中的简单布局TextView和ImageBottom
问题描述
我想在宽度 = wrap_content 的水平线上设置 TextView 和 ImageBottom。所以我尝试使用:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/widget_warning"
android:textStyle="bold"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_settings_black"
android:id="@+id/info"
android:onClick="onClick"
/>
</LinearLayout>
它是有效的,但如果文本很大,那么 ImageButton 是不可见的(如果交换 ImageButton 和 TextView 那么它工作得很好)。
对于此变体:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/widget_warning"
android:textStyle="bold"
/>
<ImageButton
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:src="@drawable/ic_settings_black"
android:id="@+id/info"
android:onClick="onClick"
/>
</LinearLayout>
TextView 和 ImageButton 被截断。如果使用 TableLayout 我会得到相同的结果。
我不想对两者都使用 weight 属性:ImageButton 必须具有 wrap_content 宽度。 我不使用支持库。GridLayout 不起作用。相对布局:如果 Button 左侧的文本,则文本使用所有宽度及以上。有任何想法吗?
解决方案
尝试使用maxEms="18"
或类似下面的东西
<?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="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxEms="18"
android:text="Warning, if widget will stipped then try to set the off battery optimization"
android:textStyle="bold" />
<ImageButton
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:src="@drawable/ic_settings_black" />
</LinearLayout>
输出:
编辑:使用ConstraintLayout
<?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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/tvTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:padding="4dp"
android:text="Warning, if widget will stipped then try to set the off battery optimization"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/info"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:src="@drawable/ic_account"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tvTitle"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
推荐阅读
- cakephp - CakePHP - 树行为:多维关联数组到树
- node.js - 异步/等待 | 有时我的代码会捕获错误,有时不会
- ios - Swift 5 Simulate Radio Button - 取消选择其他 UIButton 不起作用
- python - 如何在不硬编码文件位置的情况下让 python 代码调用 pdf 文件?
- python - 如何从具有权重的数据创建箱线图?
- botframework - BotBuilder-Samples 缺少 BotFramework-WebChat 示例所需的令牌服务器?
- java - 如何提高 RestTemplate 的性能
- reactjs - 为什么使用 Heroku 部署的 React DRF 应用程序会出现 Invalid HTTP_HOST 标头错误?
- python - 我如何迭代带有 dict 的元组
- c - 使用 sscanf 提取带有变量字段 C 的子字符串