2012-07-18 5 views
2

2 줄의 텍스트가있는 AlertDialog를 메시지로 표시하고 싶습니다. 텍스트의 두 번째 줄은 첫 번째 줄보다 작은 글꼴이어야하며 밑줄이 그어 져야합니다. 클릭 할 때 알림을 받고 싶습니다. 또한 AlertDialog를 AlertDialog.Builder.setMessage를 호출하여 생성 된 것과 비슷하게 보이기를 바랍니다.Android : 기본 테마를 유지하면서 AlertDialog를 맞춤 설정하는 스마트 방법

사용자 정의 레이아웃은 아래 코드로 수행 할 수 있지만 결과는 AlertDialog.Builder.setMessage를 사용하여 생성 된 대화 상자와 매우 다릅니다. 첨부 된 두 개의 이미지는이 코드에서 생성 된 대화 상자이며 AlertDialog.Builder.setMessage를 호출하여 각각 생성됩니다.

AlertDialog의 기본 테마를 유지하면서 내 사용자 정의 레이아웃을 사용하는 방법에 대한 제안 사항이 있습니까?

enter image description here

enter image description here

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.VERTICAL); 

    TextView tv1 = new TextView(this); 
    tv1.setText("first line"); 

    TextView tv2 = new TextView(this); 
    tv2.setText("second line"); 
    tv2.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv1.getTextSize() * .8f); 
    tv2.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG); 
    tv2.setOnClickListener(this); 

    layout.addView(tv1); 
    layout.addView(tv2); 
    builder.setView(layout); 

    builder.show(); 

확인 편집, 나는 아래의 코드를 사용하여 합리적인 결과를 생성 할 수 없습니다. 이 문제는 두 번째 줄의 textsize가 12dips로 하드 코딩되어 있지만 실제로는 첫 줄의 텍스트 크기보다 비례하여 작아지기를 바랍니다. 어쩌면 첫 줄의 textsize의 80 % 일 수 있습니다. 이 작업을 수행하는 방법에 대한 제안이 있습니까? (텍스트의 밑줄 친 부분은 조금 추한 것 클릭,하지만 난 밖으로 그것을 알아낼 수 있다고 생각하는 경우 또한, 결정)에서

String text1 = "First line\n\n"; 
    String text2 = "Second line"; 

    SpannableString content = new SpannableString(text1 + text2); 
    content.setSpan(new UnderlineSpan(), text1.length(), text1.length() + text2.length(), 0); 
    content.setSpan(new AbsoluteSizeSpan(12, true), text1.length(), text1.length() + text2.length(), 0); 

    AlertDialog.Builder builder= new AlertDialog.Builder(this); 
    builder.setMessage(content); 
    builder.show(); 

enter image description here

답변

1

매니페스트 활동을 정의 테마 대화 상자로 설정 한 다음 해당 활동을 원하는대로 디자인하면 대화 상자로 표시됩니다 (회색으로 표시된 활동은 원하는대로 바로 잡을 수 있습니다).

여기에 내가 추가하는 것은 매니페스트에 아직없는 것은 액티비티 노드의 theme 속성뿐입니다.

+0

AlertDialog를 사용하고 싶습니다 (가능한 경우). 긍적/부정적인 버튼을 추가하고 AlertDialog가 제공하는 기본 장식을 버튼 막대로 표시하기 때문에 AlertDialog를 사용하고 싶습니다. – ab11

+0

원하는 버튼을 자신의 활동에 추가 할 수 있습니다! 나는 당신이하고 싶은 일 (주식 대화 상자의 일부 수정)이 가능하다는 것을 확신하지 못합니다. 나는 그렇지 않다고 믿는다. –

+0

AlertDialog는 AlertDialog.Builder.setPositiveButton 등을 호출하여 단추를 추가하면 기본 모양을 제공합니다. 모양은 OS 빌드에 따라 다르므로 사용자 지정 Activity에서 다시 작성하기가 어렵습니다. 마찬가지로, AletDialogs의 텍스트의 기본 모양은 장치 빌드에 따라 다릅니다. 그래서 가능한 경우 사용자 정의 AlertDialog를 사용하려고합니다. – ab11

관련 문제