2017-01-16 3 views
2

참고 : 기존 질문에서 '오른쪽에 스낵바 동작 맞추기'라는 제목이 붙어 있지만 본인의 질문에 해당하지 않습니다.태블릿에서 Android 스낵바 동작이 올바르지 않음

재료 설계 사양에 따르면 스낵바의 동작은 오른쪽/끝 맞춰 져야합니다. 작은 화면의 기본 동작은 예상대로 작동합니다 (화면의 전체 너비, 동작이 화면 오른쪽에 정렬 됨). 그러나 태블릿에서는 설명/제목 텍스트 옆에 조치가 일부 보류되어 있습니다. 여기 예 :

Snackbar action position example

난 진짜 넥서스 9 (API 25)에 본, 3 에뮬레이터 (API 22, 23, 24) 가로 및 세로 모두했습니다.

안드로이드 소스 (design_layout_snackbar_include.xml)의 snackbar 내용을위한 xml 레이아웃은 동작 버튼이 오른쪽/끝 맞춰 져야 함을 암시하는 것처럼 보입니다. 왜 내가 이것을 보지 못하는 지에 대해 당황스러워합니다.

저는 회사에서 개발중인 응용 프로그램 중 하나에서이 문제가 발생했다는 것을 처음 보았습니다. 이전에 링크 된 예제 이미지를 생성하는 데 사용했던 문제를 재현 할 테스트 응용 프로그램을 만들었습니다. 모든 앱은 "Hello World!"라고 표시됩니다. 뒤로 버튼을 누르면 작업을 확인하는 스낵 바가 표시됩니다. 내 테스트 활동은 다음과 같습니다

package au.com.test.snackbartest; 

import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 

public class MainActivity extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public void onBackPressed() 
    { 
     Snackbar snackbar = Snackbar.make(findViewById(R.id.activity_main), "Exit?", Snackbar.LENGTH_LONG); 

     snackbar.setAction("EXIT", new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       finish(); 
      } 
     }); 

     snackbar.show(); 
    } 
} 

레이아웃 XML은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:id="@+id/activity_main" 
    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:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="au.com.test.snackbartest.MainActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Hello World!"/> 

</RelativeLayout> 

이 동작에 영향을주지 않습니다 상대 레이아웃 대신 코디네이터 레이아웃을 사용. 또한 AppCompatActivity 대신 Activity를 확장해도 아무런 차이가 없습니다.

제 질문은 스낵바를 어떻게 든 잘못 사용하고있는 것입니까, 안드로이드의 버그입니까, 아니면 개발자가 설계 스팩바 레이아웃으로 완벽하게 구현할 수있는 디자인 사양입니까?

모든 도움이나 설명을 제공해 주시면 대단히 감사하겠습니다.

+0

디자인 지원 라이브러리에 버그가있는 경우 [Material components Github repository] (https://github.com/material-components/material-components-android)에 버그가 있습니다. 지원 라이브러리 버전 25.1.0의 최근 회귀로 의심됩니다. – ianhanniballake

+0

당신이 옳다고 생각합니다. 지원 라이브러리를 다시 25.0.1로 되돌릴 때 예상되는 동작을 봅니다. https://code.google.com/p/android/issues/list에서 버그가보고 된 것 같습니다. – phil44

+0

readme는 매우 명확합니다 : "안드로이드 용 Material Components는 Android SDK의 일부로 계속 출시 될 Android Design Support 라이브러리 (DesignLib)를 기반으로하며 개발은 GitHub에서 이루어지며 안정 버전은 Android SDK에 동기화됩니다 SDK의 출시 일정에 따라 " – ianhanniballake

답변

2

이것은 지원 라이브러리 25.1.0에서 도입 된 버그입니다. 25.0.1로 되돌릴 때 올바른 동작이 발생합니다. 알고 보니 버그 리포트는 이미 여기에 제출했다 :

Issue 231850: Snackbar Action Text Not Right-Aligned in 25.1.0

감사가 지원 라이브러리 업데이트의 회귀 인의 제안에 대한 ianhanniballake.

관련 문제