我正在努力使手机和平板电脑的布局相媲美。由于有许多不同的屏幕尺寸和分辨率,我想知道什么是实现如下所示的最佳方式。
底部横幅应保留纵横比,但仍可填充100%的屏幕宽度。 至于徽标,图像和按钮,它们需要尽可能接近,如所有设备上所示。
任何人都可以指出这个(相对/线性)布局的正确解决方案是什么,或者有不同的方法?
对不起,如果这个问题不合适我坚持几个小时找到最佳的正确显示方式。 :(
答案 0 :(得分:1)
您可以以编程方式创建自己的星形视图,并将其用作背景,
def example(n):
print n ** 10
将其用作背景,
public class StarLayout extends RelativeLayout {
public StarLayout(Context context) {
super(context);
}
public StarLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@SuppressLint("NewApi")
public StarLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Path clipPath = new Path();
clipPath.addPath(Star());
canvas.clipPath(clipPath);
canvas.drawColor(Color.MAGENTA);
super.onDraw(canvas);
}
private Path Star() {
Path path = new Path();
float midX = getWidth()/2;
float midY = getHeight()/2;
path.moveTo(midX, midY);
path.lineTo(midX+190, midY+300);
path.lineTo(midX, midY+210);
path.lineTo(midX-190, midY+300);
path.lineTo(midX-160, midY+90);
path.lineTo(midX-300, midY-70);
path.lineTo(midX-100 ,midY-110);
path.lineTo(midX, midY-300);
path.lineTo(midX+100, midY-110);
path.lineTo(midX+300, midY-70);
path.lineTo(midX+160, midY+90);
path.lineTo(midX+190, midY+300);
return path;
}
原始来源:
http://balvinder788.blogspot.com/2015/01/star-shape-layout-designing-android.html
答案 1 :(得分:0)
我会做什么有一个父LinearLayout(垂直)然后在其中有两个LinearLayouts,一个用于容纳徽标,图像和按钮,另一个用于容纳横幅。这两个按钮应该在第一个内部布局中的各自的LinearLayout(水平)中。横幅应该有自己的。
制作第一个LinearLayout的高度" wrap_content"并制作横幅的LinearLayout高度" fill_parent"并将引力设置为" bottom"
下面的快速草拟示例,只需将Textview替换为您的徽标
即可<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1">
<TextView
android:text="Your Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:gravity="center" />
<ImageView
android:src="@android:drawable/ic_menu_gallery"
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/imageView2" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout3"
android:gravity="center">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/button1" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/button2" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:id="@+id/linearLayout2"
android:gravity="bottom">
<ImageView
android:src="@android:drawable/ic_menu_gallery"
android:layout_width="match_parent"
android:background="#000000"
android:layout_height="wrap_content"
android:id="@+id/imageView1" />
</LinearLayout>
</LinearLayout>