2009-10-11 5 views
3

코드에서 스피너 드롭 다운 목록의 너비를 설정할 수 있습니까? 나는 정수로 채워진 회 전자를 가지고 있으며 전체 폭으로 확장되는 목록에는 좋지 않습니다. 콘텐츠를 어떻게 든 감쌀 수 있도록 너비를 설정할 수 있습니까?안드로이드에서 스피너 드롭 다운 목록의 너비를 수동으로 설정하십시오.

Spinner hSpinner = (Spinner) timerView.findViewById(R.id.timer_hour_spinner); 
ArrayList<Integer> hList = new ArrayList<Integer>(21); 

for (int i = 0; i <= 20; i++) { hList.add(i); } 

ArrayAdapter hAdapter = new ArrayAdapter(RemindMe.this, android.R.layout.simple_spinner_item, hList); 
hAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

hSpinner.setAdapter(hAdapter); 

감사!

리누스 당신은 그것의 LayoutParams을 조정하여 코드에서 아무것도의 폭을 변경할 수 있습니다

답변

1

. 세부 정보는 컨테이너에 따라 다릅니다 (LinearLayoutRelativeLayout 대 ...).

그러나 너는 왜 "코드에서"너비를 변경하려고하는지 혼란 스럽다. 레이아웃 XML에서 폭을 wrap_content으로 설정하는 것이 가장 좋은 이유는 무엇입니까?

+3

사용하지만, 드롭 다운 목록이 전체 너비로 확장됩니다. 그래서 가능한 경우 코드에서 크기를 조정해야한다고 생각한 것입니다. 내 질문에 명확하지 않았을 수도 있지만 드롭 다운 목록에서 너비를 설정하고 스피너 개체 자체는 설정하지 않습니다. 어떤 아이디어? 언제나처럼, 도와 줘서 고마워! – aspartame

+0

아, 미안, 오해. 드롭 다운보기에 대해 다른 레이아웃을 시도 할 수 있습니다. 너비가 드롭 다운 레이아웃에 의해 정의되는지 또는 "드롭 다운"대화 상자에 고유한지 여부는 알 수 없습니다. 후자라면 아마도 할 수있는 일이 없을 것입니다. – CommonsWare

+0

좋아, 나는 가능하다면 지저분해질 것이라고 생각했다. 실제로 스피너를 건너 뛰고 대신 SeekBar를 사용했습니다. 어쨌든 잘 돌아갔습니다. 당신의 도움을 주셔서 감사합니다! – aspartame

0

스피너 드롭 다운 모양을 제어하는 ​​것이 간단합니다. 사용해보기 :

//Step 1. create the drop down list 
static List<String> special_Spinner_Display_List = new ArrayList<String>(); 
// add your values to the list...(this is best done using a for loop) 
special_Spinner_Display_List.add(item1); 
special_Spinner_Display_List.add(item2); //etc., etc. 

//Step 2. build the spinner 
ArrayAdapter arrayAdapter_special = new ArrayAdapter(this, 
     R.layout.your_special_spinner, special_Spinner_Display_List); 
arrayAdapter_special.setDropDownViewResource(R.layout.special_spinner_dropdown); 
specialSpinner.setAdapter(arrayAdapter_special); 

//Step 3. create an XML layout file called special_spinner_dropdown where you can 
//style to your heart's content. Here's an example: 

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/SpinnerDropdown" 
style="?android:attr/spinnerDropDownItemStyle" 
android:layout_width="match_parent" 
android:layout_height="60dp" 
android:background="#D5ECED" 
android:ellipsize="marquee" 
android:singleLine="true" 
android:textSize="24sp" 
android:textStyle="bold" 
android:textColor="@color/black" /> 

그래, 맞아. Lemme 그것이 작동하는 방법을 알아!

+1

드롭 다운 리소스의 너비를 설정하는 방법을 알고 있습니까? 그것은 작동하지 않는 것 같습니다. –

2

그냥 사용

setDropDownWidth(desiredWidth); 
+7

API 레벨 16에 추가되었습니다. – f20k

+0

어떻게 낮은 API를 사용할 수 있습니까? 덕분에 –

+1

내 하루 저장 :) – Qasim

0

태그를 사용하여 회 전자의 XML 파일에서 드롭 다운 폭을 설정

안드로이드 : dropDownWidth = "@ DIMEN/desired_width"

Explaination :

mDropDownWidth = pa.getLayoutDimension(R.styleable.Spinner_dropDownWidth, 
     ViewGroup.LayoutParams.WRAP_CONTENT); 

Spinner 클래스에서 스피너 항목을 초기화 할 때이 필드가 드롭 다운 너비로 사용됩니다. 나는 응용 프로그램에 스피너를 클릭하면, 프로그램 API 레벨 16 이상 스피너 드롭 다운 폭을 변경

, 내가 레이아웃 파일에서 "wrap_content"로 스피너의 폭을 설정 한

mSpinner.setDropDownWidth(size_in_pixel); 
관련 문제