我有一些活动类似于图片中的活动,我在所有活动中都使用Constraintlayout和线性布局,所有内容都在dp和sp中设置。但是在仿真器中看起来与在实际设备中不同。左图来自仿真器,右图来自华为。我阅读了一些文档,他们建议使用我已经在做的constraintlayouts和dp。不会以编程方式更改任何大小。我也尝试过使用layout_weight,但也没有成功,所以我不知道自己缺少什么。
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/main_activity_animation_list"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/laySimbol"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/buttonShadeInici"
android:orientation="horizontal">
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="77dp"
android:layout_gravity="center_vertical"
android:background="@android:color/transparent"
android:text="⟁"
android:textColor="@color/blueShade27"
android:textSize="50sp"
android:textStyle="bold" />
<Button
android:id="@+id/buttonScore"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="30dp"
android:layout_weight="1"
android:background="@drawable/buttonlevelscore"
android:foregroundGravity="center"
android:text="1.254"
android:textColor="@color/blueShade62"
android:textSize="20sp"
android:textStyle="bold" />
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:clickable="false"
tools:context="com.example.root.exercicis.MainActivity">
<com.example.root.exercicis.LikeButtonView
android:id="@+id/LikeButtonView"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="30dp"
android:clickable="false" />
</FrameLayout>
<ImageView
android:id="@+id/imageViewPopUp2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:foregroundGravity="right"
android:onClick="ShowPopup"
android:paddingRight="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/verticalLayout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@android:drawable/ic_menu_sort_alphabetically" />
</LinearLayout>
<LinearLayout
android:id="@+id/verticalLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/layout_preguntes"
android:gravity="center"
android:orientation="vertical"
android:padding="25dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/laySimbol">
<TextView
android:id="@+id/preguntaView"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="TextView"
android:textColor="@android:color/background_light"
android:textSize="30sp"
app:layout_constraintBottom_toTopOf="@+id/verticalLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/respostaButton1"
android:layout_width="300dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginTop="40dp"
android:layout_marginBottom="20dp"
android:background="@drawable/buttons_resposta_corners_top"
android:color="#64686868"
android:gravity="center"
android:onClick="OnClickButton"
android:paddingBottom="0dp"
android:tag="0"
android:text="Button"
android:textAllCaps="false"
android:textColor="#FFFFFF"
android:textSize="30sp" />
<Button
android:id="@+id/respostaButton2"
android:layout_width="300dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
android:background="@drawable/buttons"
android:gravity="center"
android:onClick="OnClickButton"
android:paddingBottom="0dp"
android:tag="1"
android:text="Button"
android:textAllCaps="false"
android:textColor="#FFFFFF"
android:textSize="30sp" />
<Button
android:id="@+id/respostaButton3"
android:layout_width="300dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
android:background="@drawable/buttons"
android:gravity="center"
android:onClick="OnClickButton"
android:paddingBottom="0dp"
android:tag="2"
android:text="Button"
android:textAllCaps="false"
android:textColor="#FFFFFF"
android:textSize="30sp" />
<Button
android:id="@+id/respostaButton4"
android:layout_width="300dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
android:background="@drawable/buttons_resposta_corners_bottom"
android:gravity="center"
android:onClick="OnClickButton"
android:paddingBottom="0dp"
android:tag="3"
android:text="Button"
android:textAllCaps="false"
android:textColor="#FFFFFF"
android:textSize="30sp" />
</LinearLayout>
答案 0 :(得分:0)
您可以使用SDP(Scalable dp)解决此问题:https://github.com/intuit/sdp
@dimen/_1sdp // Change value before sdp keyword
答案 1 :(得分:0)
首先,您应注意,“ dp”取决于设备屏幕的像素密度。
也就是说,它们在仿真器和真实设备上的显示方式有所不同也就不足为奇了。
我愿意打赌,模拟器与Real设备的dpi或分辨率是不同的。
除此之外-您要在所有设备上实现的预期效果到底是什么?
或者说,您不喜欢并试图阻止这种情况发生的是什么?
了解这些事情对我找出罪魁祸首或应该改变的原因非常有帮助。
答案 2 :(得分:0)
您可能不会在所有设备上都有相同的外观。不仅像素数和分辨率不同,屏幕比例和密度也不同。 关于视图重叠,在每个约束布局的子级上设置约束很重要。您缺少第一个线性布局的约束。
<LinearLayout
android:id="@+id/laySimbol"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/buttonShadeInici"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@+id/verticalLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
此外,您正在为linearlayout子级设置约束,它将无法正常工作。
我的建议是检查布局,设置所有约束,并且不要在约束内使用线性布局,这是不需要的。 选中this。
答案 3 :(得分:0)
根据我作为移动开发人员的经验,我没有使用 Button,而是将其更改为 TextView,这样设计起来更容易。您必须避免使用硬编码,您的宽度和高度必须是 match_parent 或 wrap_content。使用 TextView 作为按钮将帮助您创建一个 wrap_content 大小的按钮。
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="77dp"
<Button
android:id="@+id/buttonScore"
android:layout_width="wrap_content"
android:layout_height="40dp"