1

我的佈局被設計在目前的方式是,我有一個width="match_parent"LinearLayout。這個視圖有兩個ImageView作爲它的子元素,它佔用LinearLayouts寬度的一半使用weight="1"中心parentview的半imageview的不使用的LinearLayout

問題是這樣,onClicks被註冊在卡的透明部分,因爲視圖被拉伸。

編輯:我應該提到的是,這些圈子只應該代表的圖像文件,而不是圓形狀填充純色。

我當前的代碼:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <ImageView 

     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" /> 

    <ImageView 

     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" /> 

</LinearLayout> 

紅色部分表示觸摸區域

x

我想要的是像下面,同時保持率:this

我知道我可以簡單地嘗試在RelativeLayout中嵌入每個ImageView,如下所示:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <RelativeLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

     <ImageView 
      android:layout_centerInParent="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" /> 

    <RelativeLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

     <ImageView 
      android:layout_centerInParent="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </RelativeLayout> 


</LinearLayout> 

但嵌套像這樣是非常可怕的形式

+0

使用百分比相對佈局無需嵌套[鏈接](https://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html) – Bali

+0

@Bali,像一個魅力,感謝!如果您提交您的評論作爲答案,我會將其標記爲這樣! – TormundThunderfist

+0

我已經添加了我的答案,因爲評論請檢查 – Bali

回答

1

使用比例相對佈局的嵌套重需要link here

+0

像魅力一樣工作,我最終使用PercentageRelativeLayout和'width =「match_parent」'並將'marginLeftPercentage'和'marginRightPercentage'分配爲'17% ' – TormundThunderfist

+0

很好的知道 – Bali

0

您可以使用RelativeLayout的

<RelativeLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1"> 

    <ImageView 
     android:layout_alignParentLeft="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <ImageView 
     android:layout_alignParentRight="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</RelativeLayout> 

但是,這將導致一段時間重疊,如果屏幕的長寬比較小。

0

你可以看到被觸摸的像素的顏色和採取相應的行動:

final Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap(); 
    imageView.setOnTouchListener(new OnTouchListener(){ 
     @Override 
     public boolean onTouch(View v, MotionEvent event){ 
     int x = (int)event.getX(); 
     int y = (int)event.getY(); 
     int pixel = bitmap.getPixel(x,y); 

     int redValue = Color.red(pixel); 
     int blueValue = Color.blue(pixel); 
     int greenValue = Color.green(pixel); 
     if(redValue != 255 && blueValue != 255 && greenValue != 255) { 
      //Not the background, so handle the click 
     } 
     return false; 
     } 
    }); 
0

嘗試創建新的組件:在你的ImageView

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="oval"> 
<solid android:color="@color/your_color" /> 
</shape> 

然後設置爲源:res/drawable/my_circle.xml

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <ImageView 

     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:src="@drawable/my_circle" /> 

    <ImageView 

     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:src="@drawable/my_circle" /> 

</LinearLayout> 
+0

這不是我想要的 – kId