就在这里,这个布局将为您提供 3个图像,这些图像的宽度相等,宽度与3个文本视图中的最长文本一样宽。
它们的宽度相等,因为它们是match_parent而父级是wrap_content到最大的TextView。
3个文本视图以背景为中心,左侧和右侧等于空格。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0000FF"
android:gravity="center" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:drawableLeft="@drawable/ic_launcher"
android:text="view 1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:drawableLeft="@drawable/ic_launcher"
android:text="view 2"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:drawableLeft="@drawable/ic_launcher"
android:text="view 3 longer text"/>
</LinearLayout>
</LinearLayout>
像这样:
问题是Lint正在发出内部LinearLayout无效的警告。(这不是因为它是内部文本视图变得宽度相同的原因。
任何人都可以生成相同的布局,但没有lint警告吗?
答案 0 :(得分:2)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="view 1"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="view 2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="view 3 longer text"/>
</LinearLayout>
这给了我类似的结果,Lint没有任何错误。我已从代码中删除了drawable标签,因为我没有使用您的drawables。只需添加它们。这里唯一的问题是你不能在LinearLayout标签中放置背景。您必须为您的活动创建自定义主题,这非常简单,因为您可以将现有主题设置为父级,只需更改背景值...更多关于主题here
答案 1 :(得分:1)
经过深思熟虑......这是我的解决方案,即将外部线性布局更改为帧布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0000FF" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:drawableLeft="@drawable/ic_launcher"
android:text="view 1" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:drawableLeft="@drawable/ic_launcher"
android:text="view 2" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:drawableLeft="@drawable/ic_launcher"
android:text="view 3 longer text" />
</LinearLayout>
</FrameLayout>
您可以将lineaer布局上的布局重力设置为:
android:layout_gravity="center_vertical|center_horizontal"
或在框架布局上设置常规重力。
答案 2 :(得分:1)
因为它只是一个警告,并且你知道布局没有用处,你可以忽略它。
或者,您可以通过向内部LinearLayout添加android:background="@null"
来欺骗lint。
答案 3 :(得分:0)
您是否尝试在线性布局中使用RelativeLayout?