我有一个简单的布局,它只有2个小部件:全屏ImageView
作为背景和Button
。背景没有问题,但是,我没有定位&调整按钮大小以适合所有屏幕。该按钮应位于屏幕的2/3处,居中对齐。
这是我的activity_login.xml
:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="hk.goodsight.kitchenlifestyle.LoginActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/bg_signin"
android:contentDescription="background"
android:scaleType="centerCrop"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="382dp"
android:layout_height="66dp"
android:text="@string/sign_in"
android:id="@+id/btnLogin"
android:background="@drawable/btn_signin"
android:layout_alignParentBottom="true"
android:layout_marginBottom="150dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_centerHorizontal="true"
android:textColor="@android:color/white" />
</RelativeLayout>
从其他SO问题中,有些人推荐以下内容:
我应该选择哪个?
P.S。必须支持Android 4.0,因此我不能将百分比用作保证金底部,这是在API 23中引入的。
答案 0 :(得分:2)
我想有点天真的方法,但我已在许多设备上测试了这个预览,它显示了你想要的东西。我在父布局上设置了图像背景,而不是ImageView
。将值替换为原始图像资源。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/ic_launcher"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"
android:orientation="vertical">
<Button
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="blah"
android:textColor="@android:color/white" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"/>
答案 1 :(得分:1)
您可以从WindowManager获取显示大小,然后将按钮边距顶部设置为编程的2/3分数,如:
android.view.Display display = ((android.view.WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Button btn = new Button(this);
LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
params.setMargins(0,(int)(display.getHeight()*0.666),0,0);
btn.setLayoutParams(params);