如何解决如何在不嵌套视图的情况下为ScrollView内容设置最大宽度?
我要实现的是在一个位置上为组件设置一些最大宽度,以使将父级宽度拉伸到较大值时(例如,当方向更改为横向时)使所有视图看起来都很熟悉
假设我们有一个带有容器视图的ScrollView
和一些TextView
:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Lorem ipsum..."/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Lorem ipsum..."/>
</LinearLayout>
</ScrollView>
现在,我想将TextView
的最大宽度设置为300 dp。我可以用
ConstraintLayout
并将layout_constraintWidth_max
设置为每个TextView
,但是我只想将其设置在一个位置。为此,我可以像这样将LinearLayout
嵌套到ConstraintLayout
中:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
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="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_max="300dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Lorem ipsum..." />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Lorem ipsum..." />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
它给了我想要的结果,但是该解决方案的陷阱是我必须嵌套is not the recommended approach的视图。
问题是,如何在不嵌套父视图的情况下轻松实现所有子级的最大宽度设置?
解决方法
如果您希望多个项目看起来相同,则应使用样式并将其设置为所有项目。在您的样式中,只需添加与所有视图相同的所有内容,如下所示:
<style name="NewStyle">
<item name="android:maxWidth">300dp</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:text">Lorem ipsum...</item>
</style>
如果只有一个相似之处,则可以将300dp提取到dimens.xml并在所有地方使用它。 另一种解决方案是:
<LinearLayout
android:layout_width="300dp"...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。