0

컷섬 키보드에 HUD 디스플레이를 구현하려고합니다. HUD에는 키/값 쌍이 포함됩니다. 나는 프로그래밍 방식으로 TableLayout을 만들고이를 캔버스에 그려야한다. 이를 위해, 나는 keyboardview 된 onDraw를 무시하고있다() 메소드 :안드로이드 - 동적 TableLayout이 나타나지 않습니다.

@Override 
public void onDraw(Canvas canvas) { // In the custom MyKeyboardView class 
    MyHUD hud = new MyHUD(getContext()); 
    super.onDraw(canvas); 
    hud.tl.draw(canvas); //tl being the TableLayout to draw 
} 

MyHUD 클래스 :

public class MyHUD { 

    public TableLayout tl; 
    private MyData mData; 

    public MyHUD(Context context) { 

     TableRow.LayoutParams trParams = new TableRow.LayoutParams(
     TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT); 
     TableLayout.LayoutParams tlParams = new TableLayout.LayoutParams(
     TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT); 

     tl = new TableLayout(context); 
     tl.setLayoutParams(tlParams); 

     for (int i = 0; i < 10; i++) { 

     TableRow tr = new TableRow(context); 
     tr.setId(100+i); 
     tr.setLayoutParams(trParams); 

     TextView charTV = new TextView(context); 
     charTV.setId(200+i); 
     charTV.setText("Hello " + i); 
     charTV.setTextColor(Color.RED); 
     //charTV.setLayoutParams(trParams); 
     tr.addView(charTV); 

     TextView keyTV = new TextView(context); 
     keyTV.setId(300+i); 
     keyTV.setText("world " + i); 
     keyTV.setTextColor(Color.CYAN); 
     //keyTV.setLayoutParams(trParams); 
     tr.addView(keyTV); 

     tl.addView(tr, tlParams); 
     }  
    } 
} 
현재 데이터 페칭이 없습니다

(주 단지에 "Hello World"에 대한 테스트 목적). 몇 가지 다른 게시물에서 볼 수 있듯이 TextView 레이아웃을 주석 처리했지만 문제는 아닌 것 같습니다.


대체 옵션 :

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:stretchColumns="0,1" 
     android:id="@+id/my_hud" > 
</TableLayout> 

다음 XML과 함께

tl = (TableLayout) findViewById(R.id.my_hud); 

대신 생성자를 통해 TableLayout을을 instanciating의

는, 내가 좋아하는 뭔가를 시도했다 문제는 findViewById 메서드가 내 사용자 정의 클래스에 대해 정의되지 않는다는 것입니다.

TableLayout을 제대로 그리지 않는 이유는 무엇입니까?

hud.tl.measure(canvas.getWidth(), canvas.getHeight()); 
    hud.tl.layout(0, 0, canvas.getWidth(), canvas.getHeight()); 

는 이제 TableLayout을 제대로 그려집니다 :

+0

흠 나는 단지 이것에 대해 생각했다 : 내가 layoutview를 instanciate하기 위해 keyboardview의 컨텍스트를 사용하고있는 것이 맞습니까? –

답변

0

내가 없어진거야 여기이 간단 할 것이라고 생각하지만,하지 않았다. 성공.

관련 문제