2010-07-28 3 views
1

내 문제는, n-TextViews가 있고 프로그래밍 방식으로 TableLayout에 추가된다는 것입니다. 그것은 완전히 문제가되지 않습니다.이 TextViews 또는 TableLayout의 스타일을 지정하는 경우, 매번 뭔가를 추가 할 때 다른 TextViews의 맨 아래에 TextView가 추가됩니다. 이러한 뷰의 텍스트 너비와 일부 픽셀 (WRAP_CONTENT는 방금 100 % 너비로 ...)에서 계산 된 가변 너비가 있습니다.TableLayout "Stackable"에 TextViews 추가하기

It is like this right now: 
------------------------------------------ 
[TextView 1] 
[TextView 2] 
[TextView 3] 
[TextView 4] 
------------------------------------------ 

And it should be like: 
------------------------------------------ 
[TextView 1] [TextView 2] [TextView 3] 
[TextView 4] 
------------------------------------------ 

실제로 저는 TableLayout이 필요 없습니다. 네가 원하는대로 변할 수있어. 물론 TextViews가 WRAP_CONTENT를 너비로 얻을 수 있다면 더 좋을 것입니다.

편집 : Btw. orientation = "horizontal"인 LinearLayout은 처음에는 corret에 TextView를 추가하지만 끝에는 다음 줄로 넘어 가지 않고 그냥 오른쪽에 추가하면 다음과 같이 분할됩니다.

답변

0

난 당신이 그런 일을 시도 할 수 있었다 생각합니다.
- 그 너비를 가져 와서 변수 (mWidth)에 저장하십시오.
- TableRow을 만들고, 처음에 TextView을 추가하고 너비를 변수 (mTotalWidth)에 저장하면 행에 TextView을 넣습니다.
- 새 Textview을 추가하려는 경우 만들고, 너비를 가져 와서 mTotalWidth에 추가 할 때 합계를 계산합니다.
이제
if mTotalWidth < mWidth, 당신은 당신이 새로운 TableRow을 만들 넣어 당신의 TextView 현재 행에 추가하고 mTotalWidth
else를 증가하여 그것에 Textview,이 TextView의 폭에 mTotalWidth의 값을 변경합니다.
그러면 모든보기에서이 작업을 반복 할 수 있습니다. 이것은 약간 어수선하게 보일 수 있지만 그것이 효과가있을 것이라고 생각합니다.

+0

이것은 좋은 생각처럼 들리네! 그 조금 미친하지만 잘 :) 단, 내 경우에는 단점이 있는데, 나는 이것을 다음과 같이 만들었습니다. ListView에서 일부 행을 클릭하면 맨 위에 TextViews가 추가됩니다. TextViews 자체를 클릭하면 상단에서 제거됩니다. 제거가이 솔루션에 문제가 될 수 있습니다 ... –

+0

사실, 나는 어떤 문제도 보지 못합니다. 거기에'TableLayout'에 대한 removeView 메서드가 어디에 문제가 무엇입니까? http://developer.android.com/reference/android/view/ViewGroup.html#removeView%28android.view.View%29 – Sephy

+0

길이를 다시 확인하고 행에 TextView가 있는지 확인해야합니다.마찬가지로 : TableRow에 TextView가 있는지, TableRow를 제거하지 않음, TableRow에 TextView가 없으면 TableRow를 제거하십시오. 5 행의 두 번째 TableRow에 3 개의 TextView가 있고 그 중 하나를 삭제하면 나머지는 어떻게됩니까? ;) –

0

당신이하고자하는 일에 GridView을 사용하고 싶을 수도 있습니다. 당신이하고 싶은 것을 지원하는 Layout 클래스가 있다고 나는 믿지 않는다.

GridView으로 가면 TextView을 쉽게 만들 수 있으므로 ArrayAdapter을 사용할 수 있습니다.

다음 자식이 현재 행에 맞지 않는 경우 랩 어라운드를 수행하려면 사용자 정의 레이아웃 클래스를 작성해야합니다. 폭과 높이로 FILL_PARENT와 함께, 귀하의 Activity의 루트로 TableLayout을 넣어 -
:

+0

글쎄, GridView는 단점을 가지고 있습니다. 단 하나의 자식 요소는 너비에 따라 동적이지 않습니다. My TextViews는 경우에 따라 작고 때로는 화면 너비와 같은 경우도 있습니다. –