我正在尝试并排放置两个TextView,我希望一个触摸屏幕的右侧,另一个触摸左侧。我不想使用数字来定义宽度,因为不同大小的屏幕会表现不同。所以我正在尝试使用layout_gravity,由于某种原因这不起作用。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:layout_gravity="left"
android:text="rrr"
android:textColor="@color/secondTextColor"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:textSize="16dp"
android:text="sss"
android:textColor="@color/secondTextColor" />
</LinearLayout>
谁能告诉我为什么?谢谢!
答案 0 :(得分:3)
您可以尝试 android:layout_weight
&amp; android:gravity
。
阅读 What does android:layout_weight mean &amp;的 Layout Weight 强>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:weightSum="1" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:gravity="left"
android:text="Intellij" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:gravity="right" // You can add end instead of right
android:text="Amiya" />
</LinearLayout>
答案 1 :(得分:3)
您可以为每个LinearLayout
创建一个TextView
,如下所示:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="start">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:text="rrr"
android:textColor="#f2f2"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:text="sss"
android:textColor="#f3f3" />
</LinearLayout>
</LinearLayout>
重要的是,在你的第一个LinearLayout
android:gravity="start"
和第二个android:gravity="end"
中放置end
,那么它会起作用:)
使用right
代替Gravity#LEFT
来确保从右到左区域设置的正确行为。
为什么“结束”比“正确”更好?
在文本从Gravity#RIGHT
流向right
的区域设置中呈现布局时,使用left
和Gravity#START
会导致问题。
请改用Gravity#END
和XML
。同样,在layout_gravity
重力和start
属性中,使用left
而不是paddingLeft
。
对于layout_marginLeft
和paddingStart
等XML属性,请使用layout_marginStart
和minSdkVersion
。
注意:如果您的left/right
小于17,则应添加较旧的start/right
属性以及新的RTL
属性。在较旧的平台上,如果不支持start/right
且left/right
属性未知且因此被忽略,则需要较旧的Gravity#LEFT
属性。有一个单独的lint检查可以捕获这种类型的错误。
(注意:对于Gravity#START
和gravity="start"
,即使定位较旧的平台,也可以使用这些常量,因为起始位掩码是左位掩码的超集。因此,您可以使用{{1而不是gravity="left|start"
。)
答案 2 :(得分:0)
您可以使用http://www.example.com/test/product.html#color=blue
上的 // Overwrite defaults by url
var separatorIndex = window.location.href.indexOf('#');
if (separatorIndex != -1) {
var paramsStr = window.location.href.substr(separatorIndex+1);
var urlValues = paramsStr.toQueryParams();
if (!this.values) {
this.values = {};
}
for (var i in urlValues) {
this.values[i] = urlValues[i];
}
}
// Overwrite defaults by inputs values if needed
if (config.inputsInitialized) {
this.values = {};
this.settings.each(function(element) {
if (element.value) {
var attributeId = element.id.replace(/[a-z]*/, '');
this.values[attributeId] = element.value;
}
}.bind(this));
}
和android:layout_weight="1"
上的TextView's
。