4

我對android很痛心,我碰到了牆壁。接收長按/點擊android中的線性佈局?

我試圖得到一個線性佈局,功能更像一個按鈕,與新聞界和長按不同的動作 - 之所以被這樣我就可以對每一個「按鍵」 2個不同格式的文本標籤。沿着線的東西:

------------------------- 
|   2nd   | <- Label for long press (regular/smaller type) 
|   =   | <- Label for regular press (bold/larger type) 
------------------------- 

我發現解釋瞭如何收到的線性佈局的常規點擊的帖子(我用的onClick在佈局XML屬性)。但是我長時間沒有運氣。我試圖爲Aleksander Gralak的答案中描述的xml定義一個新的onLongClick屬性:Long press definition at XML layout, like android:onClick does。但沒有這樣的運氣 - 它看起來像是用於文本視圖,我試圖將其更改爲線性佈局,但失敗慘敗。

這裏是有問題的對象:Main.xml

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:clickable="true" 
    android:focusable="true" 
    android:background="@drawable/darkgrey_button" 
    android:onClick="equals" android:longClickable="true" android:id="equalsbutton" 
    android:focusableInTouchMode="false"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="2nd" 
     android:id="@+id/textView" 
     android:duplicateParentState="true"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" = " 
     android:id="@+id/textView1" 
     android:duplicateParentState="true"/> 
</LinearLayout> 

而且Main.java

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

public void equals(View view) { 
    Context context = getApplicationContext(); 
    CharSequence text = "Hello toast!"; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context, text, duration); 
    toast.show(); 
} 

回答

5

添加id到您的佈局。

<LinearLayout 
    android:id="@+id/my_button_layout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    … > 

在你Main.java

獲取到您的LinearLayout參考,並設定OnLongClickListener。這裏

LinearLayout buttonLayout = (LinearLayout) findViewById(R.id.my_button_layout); 
… 
buttonLayout.setOnLongClickListener(new OnLongClickListener() { 

    @Override 
    public boolean onLongClick(View v) { 
      Toast.makeText(Main.this, "Long click!", Toast.LENGTH_SHORT).show(); 
      return true; 
    } 

}); 
+0

總體思路爲我工作。我能夠在WebView對象上設置監聽器 – gnB

+0

完美,簡單的代碼,謝謝! – cubycode