2014-11-22 2 views
1

"Android Apps for Absolute Beginners 3 판"설명서를 따르고 있으며 API 19 (4.4.2)에서 안드로이드 프로젝트 용 중첩 된 LinearLayout이 붙어 있습니다 : Parent LinearLayout은 가로이고안드로이드 중첩 선형 레이아웃

enter image description here

하지만 내가 얻을 것은 : 수직 및 최종 결과는 다음과 같이해야합니다 두 아이의 LinearLayout을 개최하기로 내가 몇 시간을 시도

enter image description here

책의 교차 체크 코드 및 설명이 있지만 올바르게 이해할 수는 없습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:orientation="horizontal" android:background="@drawable/galaxyinfoscreen" > 

    <LinearLayout android:orientation="vertical" android:layout_margin="12dip" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:background="#00000000"> 

     <TextView android:text="@string/hello_world" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_marginLeft="48dip" android:textStyle="bold" /> 

     <TextView android:text="@string/galaxy_name" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

     <TextView android:text="@string/galaxy_solar" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

     <TextView android:text="@string/galaxy_habit" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

     <TextView android:text="@string/galaxy_colony" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

     <TextView android:text="@string/galaxy_pop" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

     <TextView android:text="@string/galaxy_fleet" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

     <TextView android:text="@string/galaxy_ships" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
    </LinearLayout> 

    <LinearLayout android:orientation="vertical" android:layout_margin="33dip" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:background="#00000000" > 

     <TextView android:text="@string/name_data" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:id="@+id/name" /> 

     <TextView android:text="@string/solar_data" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:id="@+id/solar" /> 

     <TextView android:text="@string/habit_data" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:id="@+id/habit"/> 

     <TextView android:text="@string/colony_data" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:id="@+id/colony" /> 

     <TextView android:text="@string/pop_data" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:id="@+id/pop" /> 

     <TextView android:text="@string/fleet_data" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:id="@+id/fleet" /> 

     <TextView android:text="@string/ships_data" android:textColor="#FFFFFF" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:id="@+id/ships"/> 
    </LinearLayout> 
</LinearLayout> 

이 파일에서 누락 될 수있는 무엇 : 여기 activity_main.xml의 내용입니까? 원하는 결과를 얻으려면 어떻게해야합니까?

첫째 :

android:singleLine="true" 

의 모든 목록보기에이 태그를 추가, 그래서 이것은 모든 텍스트 뷰의 위치에 대칭을 유지 현재 코드

+0

이러한 항목을 표시하려면 listview를 사용해야합니다. –

+0

@SarthakMittal 감사합니다.하지만 사용하고자하는 것이 아니기 때문에 (RelativeLayout과 다른 접근 방식을 취할 것입니다) 복잡한 응용 프로그램의 시작일 뿐이므로 책 저자가 마음에 쓴 것은 나중에 있습니다. 메뉴, 슬라이더 등이 될 수 있습니다. 따라서이 부분을 너무 많이 엉망으로 만들면 책의 지침을 따르지 못할 것입니다. 저자가 책에 실린 코드 (이 단계에서 그의 작업 코드는 출판 된 버전과 분명히 다르다)와 다운로드 된 (최종) 코드는 전혀 다른 복잡하고 복잡한 버전으로 무언가를 버린 것 같습니다. –

+0

좋아요, 그래서 중력을 1로 설정하면 (말하자면) 두 선형 레이아웃 모두에서 효과가 있습니다. –

답변

1

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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" 
    android:background="@drawable/galaxyinfoscreen" 
    android:orientation="vertical" 
    tools:context=".MainActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="48dip" 
     android:text="@string/hello_world" 
     android:textColor="#FFFFFF" 
     android:textStyle="bold" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="12dip" 
      android:background="#00000000" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/galaxy_name" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/galaxy_solar" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/galaxy_habit" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/galaxy_colony" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/galaxy_pop" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/galaxy_fleet" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/galaxy_ships" 
       android:textColor="#FFFFFF" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="12dip" 
      android:background="#00000000" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/name_data" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:id="@+id/solar" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/solar_data" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:id="@+id/habit" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/habit_data" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:id="@+id/colony" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/colony_data" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:id="@+id/pop" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/pop_data" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:id="@+id/fleet" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/fleet_data" 
       android:textColor="#FFFFFF" /> 

      <TextView 
       android:id="@+id/ships" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/ships_data" 
       android:textColor="#FFFFFF" /> 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 

"Glaxy 정보 화면"텍스트 뷰가 처음 수직의있는 LinearLayout 안에보십시오. 이 텍스트보기는 여백과 텍스트 길이로 인해 더 많은 공간을 차지하므로 두 번째 선형 레이아웃에 필요한 공간이 줄어들어 텍스트 배치가 가능해집니다.

이 문제를 해결하려면 세로 레이아웃의 부모처럼 가로 방향으로 하나 이상의 선형 레이아웃을 추가하고 "Glaxy 정보 화면"텍스트보기를 상위 부모의 직접 하위로 추가하십시오. 레이아웃을 고려할 때 여백 값을 약간 조정해야 할 수도 있습니다.

+0

감사합니다.이 방법도 유용합니다. –

+0

나는 이것을 책의 코드에 가능한 한 적은 변화를주기 때문에 해결책으로 받아 들일 것이므로 아마도 최소한의 수정으로 책에서 예제를 계속 만들 수있다. 만약 당신이 관심이 있다면, 책에서 나온 버전과 비교하여 왜이 단어가 효과적인지 몇 마디를 추가하십시오. - 당신의 대답을 더 완전하게하기 위해서입니다. (전적으로 이해하지만, 미래에이 질문을 찾을 수있는 누군가를 위해). 고맙습니다. –

0

나는이 개 제안이. 둘째

:

가 수직 방향으로 하나의 부모의 LinearLayout 보관 후 가로 방향 안쪽과 두 텍스트 뷰와 복수의 LinearLayout있다.

+0

@Nenad Bulatovic이 작품을 사용 했나요? – AabidMulani

+0

첫 번째 솔루션이 작동하지 않았습니다 (완전히) 결과는 다음과 같습니다. http://i968.photobucket.com/albums/ae168/nenadbulatovic/device-2014-11-22-203646.png. 두 번째 해결 방법은 복잡한 응용 프로그램의 시작일 뿐이므로 나중에 메뉴, 슬라이더 등이있을 것입니다. 따라서이 책을 너무 많이 엉망으로 만들면 책에서 자세한 지침을 따르지 못할 것입니다. 저자가 책에 실린 코드 (이 단계에서 그의 작업 코드는 출판 된 버전과 분명히 다르다)와 다운로드 된 (최종) 코드는 전혀 다른 복잡하고 복잡한 버전으로 무언가를 버린 것 같습니다. –

+0

첫 번째 해결 방법은 갤럭시 (첫 번째 필드)의 이름을 완전히 화면 밖으로 옮겼지만 다른 필드는 확인 된 것처럼 캡쳐 화면에서 볼 수 있습니다. http://i968.photobucket.com/albums/ae168/nenadbulatovic/device-2014-11-22-203646.png –

1

두 번째 LinearLayout은 문자열을 수용 할 수있는 너비가 충분하지 않아 포장됩니다. 중첩 된 LinearLayout을 반드시 사용해야하는 경우에는 줄 바꿈 내용이있는 너비 대신 layout_weight을 사용해야합니다. 아래 예에서 제목을 중첩 된 LinearLayout에서 다른 세로 형으로 옮겼습니다. 두 번째 LinearLayout에서

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:orientation="vertical" android:background="@drawable/galaxyinfoscreen" > 

    <TextView android:text="@string/hello_world" android:textColor="#FFFFFF" 
     android:layout_width="match_parent" android:layout_height="wrap_content" 
     android:gravity="center" android:textStyle="bold" /> 
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
     <LinearLayout android:orientation="vertical" android:layout_margin="12dip" 
      android:layout_width="0dp" android:layout_weight="3" android:layout_height="wrap_content" 
      android:background="#00000000"> 

      <TextView android:text="@string/galaxy_name" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

      <TextView android:text="@string/galaxy_solar" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

      <TextView android:text="@string/galaxy_habit" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

      <TextView android:text="@string/galaxy_colony" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

      <TextView android:text="@string/galaxy_pop" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

      <TextView android:text="@string/galaxy_fleet" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

      <TextView android:text="@string/galaxy_ships" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
     </LinearLayout> 

     <LinearLayout android:orientation="vertical" android:layout_margin="12dip" 
      android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" 
      android:background="#00000000" > 

      <TextView android:text="@string/name_data" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:id="@+id/name" /> 

      <TextView android:text="@string/solar_data" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:id="@+id/solar" /> 

      <TextView android:text="@string/habit_data" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:id="@+id/habit"/> 

      <TextView android:text="@string/colony_data" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:id="@+id/colony" /> 

      <TextView android:text="@string/pop_data" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:id="@+id/pop" /> 

      <TextView android:text="@string/fleet_data" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:id="@+id/fleet" /> 

      <TextView android:text="@string/ships_data" android:textColor="#FFFFFF" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:id="@+id/ships"/> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 
+0

위대한 작품입니다. 마지막에 태그가 하나만 빠졌 습니다만, 응답을 편집하려면 클릭하면 세 개의 닫기 태그가 올바르게 표시됩니다. 아무도 이보다 더 좋은 소식을 올리지 못하면 해결책으로 받아 들일 것입니다. 감사. –

+1

간격 문제 때문에 마지막''이 누락되었습니다. 수정 됨. 이것이 효과가있는 이유를 이해하기를 바랍니다. – Rajesh

1

는 마진 매개 변수는 android:layout_marginTop="33dip

당신은 여백 후 Top을 넣어 깜빡입니다.

)

관련 문제