2017-04-24 4 views
0

나는 weightSum와 함께 나누어 3 개 부분으로 화면을 만들 수 있습니다. 내 문제는 내 첫 번째 부분은 그 길이 (때마다 변경) 모르겠 문자열을 포함하는 textView가 포함되어 있습니다. 그것은 짧거나 매우 길 수 있기 때문에 모든 경우에 정상적인 경우에는 괜찮습니다. 그러나 문자열이 정말로 길다면 화면의 첫 번째 부분에 더 많은 '가중치'를주고 싶습니다. 그리고 문자열의 길이와 관련되기를 원합니다.안드로이드에서 문자열 높이/무게를 계산하는 방법이 있습니까? 레이아웃 PARAM 변화에 의해 동적으로 분할을 변경</p> <pre><code> android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".....my choose" </code></pre> <p>지금, 나는 성공 :

질문은 어떻게 든 문자열의 '높이'를 알 수 있고 문자열의 무게가 얼마나 필요한지 계산할 수 있습니까? 그러면 해당 부분을 다시 변경할 수 있습니까 아니면 내 경우에 대한 다른 대안이있을 수 있습니까?

감사합니다.

+0

안드로이드 : layout_width = "wrap_content"단지 텍스트의 경우 .. 그것이 작동 ... 텍스트 작은 무게 1 의지 –

+0

@AbhishekSingh 감사를 작동하는 경우 희망하지만, 텍스트 뷰를 포함하는 레이아웃도 가지고 있기 때문에 도움이되지 것 android : layout_weight : ".."그래서 항상 같은 크기입니다 ... – OriEng

답변

0

문자열의 길이를 찾으려면 알고리즘을 사용하는 것이 더 좋습니다. 길이를 찾으면 프로그래밍 방식으로 텍스트 크기 또는 무게를 변경하십시오.

+0

문자열의 길이는 알지만 질문은 정확히 어떤 크기로 체중을 변경합니까? 이 문자열 길이 (아마도 높이 또는 다른 것 ...)에 대한 세부 정보가 필요합니다. – OriEng

+0

문자열의 높이와 너비가 textsize 및 fontfamily로 변경됩니다. 따라서 폰트 패밀리에 따라 변경하십시오. http://alvinalexander.com/photos/android-roboto-fonts-examples. –

+0

감사합니다. Paint 및 Rect 오브젝트로 글꼴 및 크기를 계산하는 몇 가지 다른 방법을 시도하지만 그 너비는 항상 변하지 만 높이는 항상 같은 방식입니다. – OriEng

0

일종의 해킹입니다. getWidthTextViewString을 설정하고 해당 너비의 밑면에 weight을 할당 할 수 있습니다.

예를 들어 TextViewyourTextView 인 경우

yourTextView.setText(yourString); 
int width = yourTextView.getWidth; 
if(width > THRESHOLD) 
    setWeight(YOUR_VALUE) 
else setWeight(YOUR_VALUE) 

참고

당신은 텍스트를 설정하는 언젠가 소요 당신이 Handler을 사용할 수 있습니다 즉시 폭을 찾을 수없는 경우.

yourTextView.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     width = yourTextView.getWidth(); 
    } 
}, 300); 
+0

답장을 보내 주셔서 감사합니다. 나는 그것을 시험하고, 나의 TextView의 폭과 높이를 얻으려고 노력한다. 너비는 항상 동일합니다 (변경되지 않았기 때문에 의미가 있습니다).하지만 문제는 높이와 같습니다. 길이가 다른 문자열 (204080120200 자)에서 테스트합니다. 20에서 결과 68, 40에서 결과 127, 그리고 나서 80,120,200에서 같은 결과 - 128 .. 어쩌면 제한되거나 뭔가가 있지만 getHeight/Width에서 반환하는 것이 TextView의 문자열과 관련이 없다고 생각합니다. .. – OriEng

관련 문제