我正在尝试实现这种布局:
我的问题是中间部分。它基本上是一个带有图像和文本的framelayout。我想在顶部布局(在这种情况下是地图)和绿色布局上实现圆形图像感觉。绿色布局具有底部重力,地图的权重为1.
显然,我尝试将中间部分的填充设置为与绿色布局的距离。当然,这仅适用于一种屏幕尺寸。对于其他人,中间布局将覆盖绿色布局或地图,具体取决于每个屏幕尺寸。
是否有可能只在xml中完成这种设计?我尝试使用framelayout并将图像边距设置为负值。问题是布局中“布局外”的部分消失了......
我真的更愿意避免使用活动逻辑来正确放置中间布局......
欢迎任何想法。 :)
答案 0 :(得分:2)
它基于您知道白条高度的假设。如果您不这样做,则需要以编程方式使用ViewTreeObserver尽快获取高度,并将height / 2设置为边距。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00ff00"
android:padding="12dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer imperdiet enim vel diam vulputate dapibus. Curabitur consequat faucibus dignissim. Quisque at auctor nulla, ac volutpat dui. Sed pharetra, orci nec volutpat placerat, felis justo dapibus felis, ac vulputate tellus libero id purus. Ut erat risus, fermentum vestibulum urna eu, scelerisque tempus lorem. Proin tincidunt vitae risus id tincidunt. " />
</LinearLayout>
<View
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="#0000ff"
android:orientation="vertical" >
</View>
<LinearLayout
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_above="@+id/linearLayout1"
android:background="#55555555"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_marginBottom="-20dp" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
</RelativeLayout>
答案 1 :(得分:0)
我认为您必须按照建议使用填充,但不是硬编码边距,您必须在dimen.xml中定义不同值文件夹下的值。
答案 2 :(得分:0)
我将视图放在相对布局中,如下所示:
<RelativeLayout>
<top view definition>
<bottom view definition>
<text view definition: above bottom view, below top view, align parent right />
<image view with valid positioning related to text view>
</RelativeLayout>
图像视图将被渲染为最后一个,因此它将覆盖顶视图的某些部分,底部视图的某些部分,并且将完全位于您想要的位置。