2011-08-12 4 views
1

첫 번째 '게임'에 대한 UI 개발에 어려움이 있습니다.첫 Android UI에 대한 도움말

다음은 스크린 샷입니다.

screen shot

나는 TableRows와 TableLayout을 포함 된있는 LinearLayout을 사용하고 있습니다. 요소의 위치를 ​​제어하는 ​​것은 지루하고 어려워 보입니다.

예를 들어 일을 처리하기 위해 빈 TextView를 삽입하여 다른 요소를 제자리에 밀어 넣었습니다.

단추에 패딩을 추가하여 원하는 크기가되도록했습니다.

더 좋은 방법이 있나요?

감사합니다.

+0

것은 당신의 XML 코드를 게시해야합니다 빈 TextViews를 추가하는 것처럼 -이 확실히 나쁜 관행 (I 수평 공간을 필요로 할 때 그러나, 나는 종종 눈에 보이지 않는 뷰를 사용합니다)입니다 – Phil

답변

9

확실히이 경우 Relative Layout을 사용하고 싶습니다.

각 버튼이 다른 버튼과 관련된 위치를 지정할 수 있습니다.

현재 사용중인 UI를 개발하는 것을 절대적으로 피하십시오. TextViews는 다양한 Android 배포판에 대해 서로 다른 크기가 될 것이며, 테스트 한 장치를 보면 알 수있을 것입니다.

편집 : 자식에 layout_weight = "Y":

당신이 빈 공간을 필요로하는 경우는 상위 뷰와 안드로이드의 XML 속성 android:weightSum="x"를 사용합니다. 그러면 layout_height 및 layout_width에서 할당 된 공간을 자식이 차지합니다 (y/x).

는 편집 :

나는 이것에 대한 조언의 또 다른 좋은 비트가 "방향"버튼 같은 것들에 대한 개별 레이아웃을 사용하는 것입니다 생각합니다. 각 그룹을 개별적으로 이동하지 않고 화면에서 그룹으로 처리 할 수 ​​있습니다.

+0

.. RelativeLayout이 아닌 요소를 위에서 아래로 볼 수 있습니까? RelativeLayout을 사용하면 화면 캡처와 같은 효과를 얻을 수 있습니다. 상단의 텍스트처럼 왼쪽의 버튼 컨트롤과 오른쪽의 버튼 컨트롤? -감사! – SkyeBoniwell

+2

여백과 패딩을 사용하고 각 뷰를 다른 뷰에 상대적으로 레이아웃합니다. – Jack

+0

최신 SDK 도구의 시각적 편집기가 우수합니다. 원하는 위치로 요소를 끌어다 놓을 수 있으며 모든 relativeLayout 태그를 자동으로 채 웁니다. 또한 새로운 사용자는 질문에 대한 답변을 답변으로 표시해야합니다. 다른 사용자가 정답을 훨씬 빨리 찾을 수 있습니다! – Codeman

-2

사용 AbsoluteLayout - 당신이 모든 요소

http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

<?xml version="1.0" encoding="utf-8"?> 
<AbsoluteLayout 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
> 
<Button 
    android:layout_width="188px" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    android:layout_x="126px" 
    android:layout_y="361px" 
    /> 
<Button 
    android:layout_width="113px" 
    android:layout_height="wrap_content" 
    android:text="Button" 
    android:layout_x="12px" 
    android:layout_y="361px" 
    /> 

+2

장치 및 화면 크기마다 장치를 유지 관리하지 않으려면 절대 레이아웃을 사용하지 마십시오. –

+0

아야 - 그 고통 것입니다. 예. AVD/테스트 장치에서 완벽하게 보이지만 다른 장치에서 시도해보십시오. – Jack

1

당신은이 문제를 해결하기 위해 RelativeLayout의를 사용해야 넣어 정확히 명시 할 수 있습니다. 나는 당신이 원하는 가정하자 ... 나는 누를 밀리지 않은 행동에 대한 내 자신의 이미지를 가지고 들어

내가 안드로이드의 기본 버튼을 사용하지 않은 ... 한 번 비슷한 문제를 통해

을 갔어요 동쪽의 "버튼"을 놓습니다. "I"이미지에 당신이 전화

public void addEastImageView(RelativeLayout myBackgroundLayout, ImageView center, ImageView east, int leftPadding, int topPadding, int rightPadding, int bottomPadding){ 
     RelativeLayout.LayoutParams rightSide = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     rightSide.addRule(RelativeLayout.RIGHT_OF, center.getId()); 

     east.setPadding(leftPadding, topPadding, rightPadding, bottomPadding); 
     myBackgroundLayout.addView(east, rightSide); 
} 

"센터"라는 이미지 뷰 것 하나 : 당신은 같은 기능을 사용할 수 있습니다. 패딩 매개 변수를 사용하면 ImageView 사이의 거리를 제어 할 수 있습니다. "서쪽", "남쪽"및 "북쪽"버튼을 추가하는 것과 같은 함수를 만들 수도 있습니다. 매개 변수 "RelativeLayout.RIGHT_OF"를 "RelativeLayout.LEFT_OF", "RelativeLayout.BELLOW"및 " RelativeLayout.위 "를 선택하십시오.

ImageViews에 대한 일부 동작을 원한다면 setOnClickListener에 설정하면됩니다. 그런 다음 ImageView의"image "를 setBackgroundResource으로 변경하고 원하는 다른 논리 동작을 설정할 수 있습니다 .

는 희망이 도움이 : D