2017-09-14 13 views
0

RelativeLayoutの子がで、TextViewsを含む子がであり、質問に対する回答が得られ、その質問に1-4のスコアが割り当てられます平凡な、良い、そして世界的なクラス)、最後にEditTextは、ユーザーがスコアを質問した理由についてコメントを残すためのものです。ユーザーがスコアボックスをクリックすると、背景が色を変えて選択したスコアを強調表示し、他のスコアボックスの色を既定の色に戻して、選択されなくなったことを示します。EditTextをクリックすると、ボタンのonClick()関数が機能しなくなる

// ChildView views 
    badScoreView = convertView.findViewById(R.id.qwedit_main_badView); 
    mediocreScoreView = convertView.findViewById(R.id.qwedit_main_mediocreView); 
    goodScoreView = convertView.findViewById(R.id.qwedit_main_goodView); 
    worldclassScoreView = convertView.findViewById(R.id.qwedit_main_wcView); 
    badScoreTextView = (TextView) convertView.findViewById(R.id.qwedit_main_badTextView); 
    mediocreScoreTextView = (TextView) convertView.findViewById(R.id.qwedit_main_mediumTextView); 
    goodScoreTextView = (TextView) convertView.findViewById(R.id.qwedit_main_goodTextView); 
    worldClassScoreTextView = (TextView) convertView.findViewById(R.id.qwedit_main_worldclassTextView); 
    questionCommentEditText = (EditText) convertView.findViewById(R.id.qwedit_main_commentEditText); 

    // TODO: TextView score subcategory setters 

    badScoreView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO: add logic to change score 
      subCategoryScore = 1; 
      badScoreView.setBackgroundColor(Color.parseColor("#eca9a7")); 
      mediocreScoreView.setBackgroundColor(Color.parseColor("#f0ad4e")); 
      goodScoreView.setBackgroundColor(Color.parseColor("#5cb85c")); 
      worldclassScoreView.setBackgroundColor(Color.parseColor("#0275d8")); 
      questionCommentEditText.clearFocus(); 
     } 
    }); 

    mediocreScoreView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO: add logic to change score 
      subCategoryScore = 2; 
      badScoreView.setBackgroundColor(Color.parseColor("#d9534f")); 
      mediocreScoreView.setBackgroundColor(Color.parseColor("#f7d6a6")); 
      goodScoreView.setBackgroundColor(Color.parseColor("#5cb85c")); 
      worldclassScoreView.setBackgroundColor(Color.parseColor("#0275d8")); 
      questionCommentEditText.clearFocus(); 
     } 
    }); 

    goodScoreView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO: add logic to change score 
      subCategoryScore = 3; 
      badScoreView.setBackgroundColor(Color.parseColor("#d9534f")); 
      mediocreScoreView.setBackgroundColor(Color.parseColor("#f0ad4e")); 
      goodScoreView.setBackgroundColor(Color.parseColor("#addbad")); 
      worldclassScoreView.setBackgroundColor(Color.parseColor("#0275d8")); 
      questionCommentEditText.clearFocus(); 
     } 
    }); 

    worldclassScoreView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO: add logic to change score 
      subCategoryScore = 4; 
      badScoreView.setBackgroundColor(Color.parseColor("#d9534f")); 
      mediocreScoreView.setBackgroundColor(Color.parseColor("#f0ad4e")); 
      goodScoreView.setBackgroundColor(Color.parseColor("#5cb85c")); 
      worldclassScoreView.setBackgroundColor(Color.parseColor("#80baeb")); 
      questionCommentEditText.clearFocus(); 
     } 
    }); 

とレイアウトを、単に関連している場合には::以下は、これがどのように動作するかを示すために私のJavaのあるいくつかの理由

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 
<LinearLayout 
    android:id="@+id/qwedit_elv_item_score_container" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <LinearLayout 
     android:id="@+id/qwedit_main_badView" 
     android:layout_width="232.5dp" 
     android:layout_height="145.3dp" 
     android:background="@color/badScore"> 
     <TextView 
      android:id="@+id/qwedit_main_badTextView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:textColor="@color/white" 
      android:textSize="20sp" 
      android:text="Bad"/> 
    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/qwedit_main_mediocreView" 
     android:layout_width="232.5dp" 
     android:layout_height="145.3dp" 
     android:background="@color/mediocreScore"> 
     <TextView 
      android:id="@+id/qwedit_main_mediumTextView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:textColor="@color/white" 
      android:textSize="20sp" 
      android:text="Mediocre"/> 
    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/qwedit_main_goodView" 
     android:layout_width="232.5dp" 
     android:layout_height="145.3dp" 
     android:background="@color/goodScore"> 
     <TextView 
      android:id="@+id/qwedit_main_goodTextView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:textColor="@color/white" 
      android:textSize="20sp" 
      android:text="Good"/> 
    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/qwedit_main_wcView" 
     android:layout_width="232.5dp" 
     android:layout_height="145.3dp" 
     android:background="@color/worldclassScore"> 
     <TextView 
      android:id="@+id/qwedit_main_worldclassTextView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:textColor="@color/white" 
      android:textSize="20sp" 
      android:text="World Class"/> 
    </LinearLayout> 
</LinearLayout> 
<EditText 
    android:id="@+id/qwedit_main_commentEditText" 
    android:layout_width="930dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/qwedit_elv_item_score_container" 
    android:cursorVisible="false" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:inputType="text" 
    android:hint="Comments"/> 

</RelativeLayout> 

、ユーザーがEditTextを押すと、いずれかの追加テキストまたはその中からクリックすると、ボタンonClick()は機能しなくなりました(つまり、色は変わりません)。

これは焦点のあるものによるものですか? javacodeのonClick関数はCustomListViewAdapterにあり、これは私が持っているのと同じくらいたくさんの質問(どこかで約200人程度)について同じExpandableListViewを膨らませることができるようにするためです。

+0

この行を削除してください:android:focusableInTouchMode = "true" – amacf

+0

うーん、それはそれではないようです。その行が存在するかどうかにかかわらず、問題は引き続き存在します – Tadhg

答えて

0

私の知る限りでは、問題はビューの焦点にあります。 OnFocusChangeListenerを使用して、画面がタッチ・モードになったときにフォーカス・イベントが発生したかどうかを確認する必要があります。

それとも、メソッドごとのonClick(ビュービュー)内のこれらの行を追加しようとすることができます:

view.setFocusableInTouchMode(true); 
view.requestFocus(); 
view.setFocusableInTouchMode(false); 

この方法では、ビューがフォーカスを取得すると、あなたは、これらの行の後のonClick()メソッドの内部で何かができますビューが再びsetFocusableInTouchMode(false)に設定された後、コード

+0

ええと、OnFocusChangeListenerの実装をどうお勧めしますか?私は3つのラインを各onClick()メソッドに追加するより簡単な提案を試みましたが、それは解決しませんでした – Tadhg

+0

ボタンを保持するLinearLayoutにこれらのラインを追加しようとしました:android:focusable = "true" android:focusableInTouchMode = "true"? –

関連する問題