2014-01-07 7 views
0

내 응용 프로그램에 GridView가 있고 현재 화면 너비에 따라 열 수를 수동으로 설정하고 싶습니다.화면 크기에 따라 스타일이 다를 수 있습니까?

내가 시도한 것은 GridView에 적용해야하는 스타일을 설정하고 android:numColumns 속성을 다른 값으로 설정하여 values-w600dp 폴더에 대체 스타일을 제공하는 것입니다. 이것은 작동하지 않았다.

처음에 정수 리소스를 선언하고 일반적인 스타일로 사용하여이를 구현하는 방법에는 여러 가지가 있으며, 그 중 열 너비를 값으로 설정하고 GridView가 자동으로 허용하도록하는 방법이 있음을 알고 있습니다. 컬럼의 수를 결정하는 것은 아마도 가장 정상적인 해결책 일 것입니다.

그러나 아직 초기 시도가 효과가 없었던 이유가 궁금합니다. 문서에서 필자는 스타일이있는 XML 파일의 이름을 res/values 디렉토리에있는 한 지정할 수 있음을 알았습니다. 비슷한 것은 문자열과 문자열에 대해서도 지역화가 가능하기 때문에 문서가 작동하지 않거나 문자열과 같이 다른 res/values-... 디렉토리에 제공 될 수 있다는 것을 의미하는지 여부는 알 수 없습니다.

그래서 질문은 : 다른 구성에 대해 스타일을 제공 할 수 있습니까?

편집 : 파일

고해상도/값/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyGridView"> 
     <item name="android:numColumns">1</item> 
    </style> 
</resources> 

고해상도/값-w400dp/styles.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyGridView"> 
     <item name="android:numColumns">2</item> 
    </style> 
</resources> 

고해상도/레이아웃/grid_fragment.xml

을 게시
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingTop="?android:attr/actionBarSize" 
    > 
    <GridView 
      android:id="@+id/gridview" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:verticalSpacing="12dp" 
      android:paddingTop="12dp" 
      android:paddingBottom="12dp" 
      android:clipToPadding="false" 
      android:listSelector="@drawable/list_selector" 
      android:drawSelectorOnTop="true" 
      style="@style/MyGridView" 
      /> 
</RelativeLayout> 

나는 코드를 훔쳐서 문제를 발견했습니다. 나는 레이아웃 XML에서 어리석은 실수를 범했다 : style="MyGridView".

+0

짧은 대답은 yes입니다 ... –

+0

gridview 및 gridview에 대한 레이아웃을 게시하십시오. –

+0

다행스럽게 생각해 냈습니다. –

답변

1

예, 일부주의 사항이 있습니다.

Android는 기본적으로로드 할 때 현재 조건에 따라 적절한 리소스를로드합니다. 자세한 내용은 the Android Docs on Resources을 참조하십시오. 당신이 그것을 기반으로 할 수있는 일반 Feel로에 대한 screensize, 또는 available width처럼 사용할 수있는 많은 옵션이있다 등 폴더

/values 
/values-sw50dp (smallest width 50dp, for screens bigger than 50dp) 
/values-car  (if you were in a car dock) 

을 가질 수 있도록 그들이로드해야 할 때 기본적으로 자원 폴더의 이름 결정 폭.

.

매니 페스트에 해당 활동에 대해 configChanges을 설정하지 않은 경우에만 작동합니다. 일부 설정이있는 경우 Android는 사용자가 모든 것을 직접 처리하고 올바른 리소스를 자동로드하지 않는다고 가정합니다. 또한 일반적으로 좋은 코드 감각을 따르고 15 가지 화면 너비 각각에 대해 별도의 레이아웃 파일을 만들어 외출하지 마십시오.

관련 문제