2015-01-22 1 views
0

내가 extends DialogFragment하는 사용자 정의 InputDialog를 재사용하고 모든이가 잘 작동 EditInputDialog 삭제 버튼을 추가하지만, 지금은 스타일로 장난이 기발한 작은 문제를 발견하고있어있어 상속 :부모의 스타일

delete button

버튼을 여기에

의 기본 장치 스타일을 사용하는 삭제 버튼을 내가 원하는는 간결체 한자입니다 레이아웃에 대한 전자 스타일 (/res/values/styles.xml) :

Button btnDelete = new Button(getActivity()); 
btnDelete.setText("Delete"); 
RelativeLayout rl = (RelativeLayout)view.findViewById(R.id.inputLayout); 
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
lp.addRule(RelativeLayout.RIGHT_OF, R.id.btnSave); 
lp.addRule(RelativeLayout.ALIGN_BASELINE, R.id.btnSave); 
btnDelete.setLayoutParams(lp); 
rl.addView(btnDelete); 

나는 또한 스타일을 적용 시도했다 : 여기

<style name="myBackgroundStyle" parent="@android:style/Theme.Dialog"> 
    <item name="android:background">#FF0000</item> 
</style> 

내가 만들고 버튼을 추가 해요 어떻게 같은 생성시에 버튼 :

new Button(getActivity(),null,android.R.attr.buttonStyle); 

.buttonStyle 내가

그러나 그것을 시도했습니다 유일한 아니다 전혀 도움이 안돼. 내가 누락 된 것이 있거나 이것으로 무엇이 진행되고 있습니까?

그 스타일은 내가 결국 갈 일이 아니며, 이것은 단순히 테스트를위한 것이었고 나는이 문제에 부딪쳤다.

+0

버튼 컨스트럭터에 대화 상자의 컨텍스트 ('getDialog(). getContext')를 전달하여 올바른 테마를 제공해야합니다. – corsair992

+0

와우, 너무 간단합니다. 그것은 작동합니다! 대답으로 추가하면 받아 들일 것입니다. 감사. – ElefantPhace

답변

2

올바른 테마를 검색 할 수 있도록 단추의 활동 컨텍스트 대신 대화 상자의 컨텍스트를 제공해야합니다 (Dialog 기본 클래스는 자신의 테마를 제공하면서 ContextThemeWrapper을 사용하여 활동 컨텍스트를 래핑합니다).

단추 생성자에 전달 된 getActivity()getDialog().getContext()으로 바꾸면 문제가 해결됩니다. onCreateView() 콜백에 전달 된 LayoutInflater은 올바른 컨텍스트로 초기화되며 여기에서 inflater.getContext()을 호출하여 콜백을 검색 할 수도 있습니다.

관련 문제