2017-12-08 7 views
-1

나는 안드로이드 프로그래밍으로 좀 새로운데 StackOverflow 덕분에 많은 문제를 발견 할 수 있습니다. 그러나 내가 투쟁을 계속하는 곳이 있습니다 : 레이아웃. 권고대로 DP를 사용하지만 궁극적 인 해결책은 아닌 것처럼 보입니다.레이아웃을 올바르게 작성하는 방법은 무엇입니까?

은 아래를 참조하십시오, 내 XML 코드와 무엇을 what it looks like on my Nexus 5X을 :

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
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:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.damien.dartscorer.MainActivity" 
android:clipToPadding="false"> 




<View 
    android:layout_width="match_parent" 
    android:layout_height="350dp" 
    android:background="#b71c1c"/> 
<ImageView 
     android:id="@+id/mask" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="24dp" 
     android:scaleType="fitCenter" 
     android:src="@drawable/targe_mask" 
     android:visibility="invisible" 
     android:layout_marginBottom="280dp"/> 

    <ImageView 
     android:id="@+id/target" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="24dp" 
     android:scaleType="fitCenter" 
     android:src="@drawable/target" 
     android:visibility="visible" 
     android:layout_marginBottom="280dp"/> 


    <TextView 
     android:id="@+id/pointTextView" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_gravity="center_vertical|center_horizontal" 
     android:layout_marginBottom="10dp" 
     android:layout_marginTop="15dp" 
     android:layout_marginVertical="90dp" 
     android:background="@drawable/pressed_button" 
     android:fontFamily="sans-serif-medium" 
     android:gravity="center" 
     android:textColor="@android:color/white" 
     android:textSize="20sp" 
     android:visibility="invisible" /> 



    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_marginTop="315dp"> 

     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1"> 

     </Space> 

     <Button 
      android:id="@+id/button_x2" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginBottom="10dp" 
      android:layout_marginTop="10dp" 
      android:background="@drawable/pressed_button" 
      android:onClick="timesTwoClick" 
      android:text="x2" 
      android:textStyle="bold" 
      android:textSize="18dp" 
      android:textColor="#ffebee" /> 

     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1"> 

     </Space> 

     <Button 
      android:id="@+id/btn_25" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginBottom="10dp" 
      android:layout_marginTop="10dp" 
      android:background="@drawable/halfb" 
      android:elevation="9dp"/> 

     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1"> 

     </Space> 

     <Button 
      android:id="@+id/btn_missed" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginBottom="10dp" 
      android:layout_marginTop="10dp" 
      android:background="@drawable/zero" /> 

     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1"> 

     </Space> 

     <Button 
      android:id="@+id/btn_50" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginBottom="10dp" 
      android:layout_marginTop="10dp" 
      android:background="@drawable/bull" /> 


     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1"> 

     </Space> 

     <Button 
      android:id="@+id/button_x3" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_marginBottom="10dp" 
      android:layout_marginTop="10dp" 
      android:background="@drawable/pressed_button" 
      android:onClick="timesThreeClick" 
      android:text="x3" 
      android:textStyle="bold" 
      android:textSize="18dp" 
      android:textColor="#ffebee" /> 

     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1"> 

     </Space> 

    </LinearLayout> 



<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="230dp" 
    android:layout_gravity="bottom"> 

    <TextView 
     android:id="@+id/playerName1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginStart="60dp" 
     android:layout_marginTop="32dp" 
     android:text="Player" 
     android:visibility="visible" 
     android:textSize="24sp" /> 

    <TextView 
     android:id="@+id/playerName2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginEnd="60dp" 
     android:layout_marginTop="32dp" 
     android:text="Player" 
     android:visibility="visible" 
     android:textSize="24sp" /> 

    <TextView 
     android:id="@+id/playerName3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/scoreC" 
     android:layout_marginStart="60dp" 
     android:text="Player" 
     android:visibility="visible" 
     android:textSize="24sp" /> 

    <TextView 
     android:id="@+id/playerName4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/scoreD" 
     android:layout_alignParentEnd="true" 
     android:layout_marginEnd="60dp" 
     android:text="Player" 
     android:visibility="visible" 
     android:textSize="24sp" /> 


    <TextView 
     android:id="@+id/scoreA" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/playerName1" 
     android:layout_marginStart="60dp" 
     android:visibility="visible" 
     android:textSize="18sp" 
     android:text="Pts" /> 

    <TextView 
     android:id="@+id/scoreB" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_below="@+id/playerName2" 
     android:layout_marginBottom="24dp" 
     android:layout_marginEnd="60dp" 
     android:visibility="visible" 
     android:textSize="18sp" 
     android:text="Pts" /> 


    <TextView 
     android:id="@+id/scoreC" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginBottom="32dp" 
     android:layout_marginStart="60dp" 
     android:visibility="visible" 
     android:textSize="18sp" 
     android:text="Pts" /> 

    <TextView 
     android:id="@+id/scoreD" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginBottom="32dp" 
     android:layout_marginEnd="60dp" 
     android:textSize="18sp" 
     android:visibility="visible" 
     android:text="Pts" /> 
</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/winLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:visibility="gone"> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#DD000000"> 

    </View> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="32dp" 
     android:textColor="#FFEAED" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="150dp" 
     android:id="@+id/winner" /> 

    <Button 
     android:id="@+id/btn_replay" 
     android:layout_width="70dp" 
     android:layout_height="70dp" 
     android:layout_below="@+id/winner" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="140dp" 
     android:background="@drawable/replay" /> 
    <Button 
     android:id="@+id/btn_home" 
     android:layout_width="70dp" 
     android:layout_height="70dp" 
     android:layout_below="@+id/btn_replay" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="16dp" 
     android:background="@drawable/home" /> 


</RelativeLayout> 

</FrameLayout> 

second image에서 볼 수 있듯이, 레이아웃은 픽셀에 짜증 아직 화면이 큰 차이가 없어! 그렇다면 최소한 어떻게 일관된 것을 만들 수 있습니까?

또한 버튼에 표고를 추가 할 수 없어 그 이유를 모르겠습니다. 돕는

감사합니다, 데미안이 안드로이드 XML 레이아웃은 어떻게해야하지

답변

0

,이 코드는 부모와 자식 요소와 같은 UI 개발을위한 가이드 라인을 따르지 않습니다. 먼저 XML 레이아웃의 일부 코드를 확인한 다음 그 코드로 개발하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    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:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clipToPadding="false"> 
    <LinearLayout 
     android:id="@+id/ll_top" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <View 
      android:layout_width="match_parent" 
      android:layout_height="350dp" 
      android:background="#b71c1c"/> 
    </LinearLayout> 
    <TextView 
     android:id="@+id/tv_1" 
     android:layout_below="@+id/ll_top" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="20dp" 
     android:text="Some data"/> 
    <TextView 
     android:layout_below="@+id/ll_top" 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="20dp" 
     android:text="some other data"/> 
</RelativeLayout> 

이 그냥이 시도하고

+0

감사합니다 변경 매개 변수를 스터드 샘플 코드! 하지만 두 개의 imageView를 완벽하게 오버레이해야하기 때문에 frameLayout이 여전히 필요하다고 생각합니다. –

+0

레이아웃에 맞는 레이아웃을 취할 수 있지만 레이아웃을 만들기 위해서는 부모 - 자식 전략을 따라야합니다. 전체 화면을 생각하고 먼저 레이아웃을 두 부분으로 나누어 상단 부분과 하단 부분을 만든 다음 다른 부분의 상단 부분을 전체보기로 만듭니다. – Manoranjan