将宽度调整为半屏
Posted
技术标签:
【中文标题】将宽度调整为半屏【英文标题】:Adjust width to half screen 【发布时间】:2012-06-29 22:54:30 【问题描述】:我发现了这个链接:
Assign width to half available screen width declaratively
如何在相对布局中做同样的事情? 这是代码:在相对布局中尝试线性布局。但这不起作用。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/bg" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="horizontal" >
<Button
android:id="@+id/button5"
android:layout_
android:layout_
android:layout_marginTop="14dp"
android:layout_weight="1"
android:text="Button" />
<Button
android:id="@+id/button6"
android:layout_
android:layout_
android:layout_marginTop="16dp"
android:layout_weight="1"
android:text="Button" />
<Button
android:id="@+id/button4"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_weight="1"
android:text="UID"
android:textColor="#ffe5f1f1" />
<EditText
android:id="@+id/editText1"
android:layout_
android:layout_
android:layout_weight="1"
android:background="#ffe5f1f1"
android:hint="Enter UID"
android:inputType="number"
android:shadowColor="5"
android:textColor="#ff009999"
android:textStyle="bold"
android:typeface="monospace" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button7"
android:layout_
android:layout_
android:layout_weight="1"
android:layout_alignParentLeft="true"
android:layout_marginTop="18dp"
android:text="Button" />
<Button
android:id="@+id/button8"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/button7"
android:layout_weight="1"
android:layout_marginTop="16dp"
android:text="Button" />
<Button
android:id="@+id/button9"
android:layout_
android:layout_
android:layout_weight="1"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button8"
android:layout_marginTop="17dp"
android:text="Button" />
<EditText
android:id="@+id/editText2"
android:layout_
android:layout_
android:layout_alignParentRight="true"
android:layout_weight="1"
android:background="#ffe5f1f1"
android:ems="10"
android:hint="Enter Name"
android:inputType="number"
android:inputType="textPersonName"
android:textColor="#ff009999"
android:textStyle="bold"
android:layout_weight="1"
android:typeface="monospace" />
<EditText
android:id="@+id/editText3"
android:layout_
android:layout_
android:layout_alignParentRight="true"
android:ems="10"
android:layout_weight="1"
android:inputType="number" />
<EditText
android:id="@+id/editText4"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/button7"
android:layout_alignBottom="@+id/button7"
android:layout_alignParentRight="true"
android:ems="10"
android:layout_weight="1"
android:inputType="phone" />
<EditText
android:id="@+id/editText5"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/button8"
android:layout_alignBottom="@+id/button8"
android:layout_alignParentRight="true"
android:ems="10"
android:layout_weight="1"
android:inputType="textPersonName" />
<RadioButton
android:id="@+id/radioButton2"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/button9"
android:layout_alignBottom="@+id/button9"
android:layout_alignLeft="@+id/editText5"
android:layout_weight="1"
android:text="Male" />
<RadioButton
android:id="@+id/radioButton1"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/radioButton2"
android:layout_alignBottom="@+id/radioButton2"
android:layout_alignParentRight="true"
android:layout_weight="1"
android:text="Female" />
<Button
android:id="@+id/button10"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/button9"
android:layout_marginTop="31dp"
android:layout_weight="1"
android:text="Button" />
<Spinner
android:id="@+id/spinDept"
android:layout_
android:layout_
android:layout_alignBaseline="@+id/button10"
android:layout_alignBottom="@+id/button10"
android:layout_alignLeft="@+id/radioButton2"
android:layout_alignParentRight="true"
android:layout_weight="1"
android:background="#ff009999" />
</LinearLayout>
</RelativeLayout>
【问题讨论】:
您真正想要深入了解屏幕布局或它的小部件 制作一种与所有屏幕尺寸兼容的表单布局。 我不明白你的问题。链接的问题是将视图分成两半。您的线性布局中有十几个视图。你想做什么? 【参考方案1】:如果您在使用RelativeLayout 时恰好需要一半,这是一个很好的解决方法。你要做的是,制作一个以父级为中心的假不可见视图,并将左按钮设置为 alignParentLeft 和 alignRight 到该假视图,右按钮反之亦然
<RelativeLayout
android:layout_
android:layout_>
<View android:id="@+id/fakeView"
android:layout_
android:layout_
android:layout_centerInParent="true"/>
<Button
android:layout_
android:layout_
android:layout_alignRight="@id/fakeView"
android:layout_alignParentLeft="true"
android:text="Left"/>
<Button
android:layout_
android:layout_
android:layout_alignLeft="@id/fakeView"
android:layout_alignParentRight="true"
android:text="Right"/>
</RelativeLayout>
真的很聪明。
【讨论】:
我同意,非常聪明。我很想知道这是否真的比使用 LinearLayout 更快。 Idk,可能不是,但从更一般的角度来看,但如果您使用相对布局开始,这会更快,因为您消除了嵌套布局【参考方案2】:用适合你的相对布局包装同样的东西。
<LinearLayout android:layout_
android:layout_
android:orientation="horizontal">
<Button android:layout_
android:layout_
android:layout_weight="1"
android:text="somebutton">
<TextView android:layout_
android:layout_
android:layout_weight="1">
</LinearLayout>
【讨论】:
所以我必须多次使用线性布局?在相对布局中,我几乎有超过 5 行与它相似。 有一个相对布局,你可以在其中拥有包含所有行的线性布局,让它成为一、二或 100。【参考方案3】:除了urSus的回答,最好使用Space类而不是View
:
<Space android:id="@+id/fakeView"
android:layout_
android:layout_
android:layout_centerInParent="true"/>
【讨论】:
我不同意。空间仅适用于 api14+,如果您想针对各种设备,它几乎毫无用处。 好吧,api14+ 是 4.0+,根据最新的平台分布图(goo.gl/fmFDJw),现在 api 如果您发现 15% 微不足道,对您有好处。此外,此图表仅衡量可访问 google play 商店的设备,远非所有设备。【参考方案4】: Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
plannerEditLayout = (RelativeLayout) findViewById(R.id.plannerLayoutEdit);
plannerEditLayout.setGravity(Gravity.CENTER_VERTICAL);
plannerEditLayout.setLayoutParams(new RelativeLayout.LayoutParams(
(width / 2), height));
我对 LinearLayout 使用相同的代码。 Havent 为RelativeLayout 尝试了myslef。试一试。如果不起作用,请发表评论。
【讨论】:
【参考方案5】:尝试layout_weight
到 1 和 layout_width
像这样填充_parent,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/main_layout"
android:orientation="vertical"
android:padding="10dp">
<LinearLayout
android:layout_
android:layout_
android:orientation="horizontal">
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1">
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
</LinearLayout>
【讨论】:
【参考方案6】:<LinearLayout android:layout_
android:layout_
android:orientation="horizontal">
<Button android:layout_
android:id="@+id/button"
android:layout_
android:layout_weight="1"
android:text="somebutton">
<TextView android:layout_
android:id="@+id/textview"
android:layout_
android:layout_weight="1">
</LinearLayout>
在上面的例子中使用了LinearLayout,将widget layout_width设置为“match_parent”并提供权重(指定要占用的区域)。
这解决了你的问题。
【讨论】:
不。每个元素都有 id 定义。没关系。以上是关于将宽度调整为半屏的主要内容,如果未能解决你的问题,请参考以下文章
将 LinearLayout 调整为 ImageView 的宽度
如何使用 CSS `resize` 将元素的高度/宽度调整为小于 Chrome 上的初始高度/宽度?
使用“Vstack”将图像大小调整为屏幕宽度,同时保持纵横比